Search code examples
phparraysmultidimensional-arrayarray-column

PHP 7 array columns not working for multidimensional array


Below is my array structure:

Array
(
    [2016-09-01] => Array
        (
            [1] => Array
                (
                    [hours_type_id] => 1
                    [date] => 2016-09-01
                    [hours] => 8.00
                    [ts_weekly_id] => 53428
                )

            [2] => Array
                (
                    [hours_type_id] => 2
                    [date] => 2016-09-01
                    [hours] => 0.00
                    [ts_weekly_id] => 53428
                )

            [10] => Array
                (
                    [hours_type_id] => 10
                    [date] => 2016-09-01
                    [hours] => 0.00
                    [ts_weekly_id] => 53428
                )

        )

I am trying to get all hours column in another array.

Below is the code:

$billcols   = array_column($billhours, "hours");

Is there any other function to get columns in array other than array_column which will work for multidimensional array like show above.


Solution

  • There is an extra dimension, so:

    $billcols = array_column($billhours['2016-09-01'], "hours");
    

    If there are multiple dates, just loop and merge the results. We don't use $date here, just an example:

    $billcols = [];
    foreach($billhours as $date => $array) {
        $billcols = array_merge($billcols, array_column($array, "hours"));
    }