array_column не работает для массива объектов?

Это моя текущая структура массива:

array(2) {
["Ground"] => array(4) {
[0] => object(Shipping\Model\Shipping)#337 (5) {
["shipping_id"] => NULL
["min_weight"] => string(4) "0.00"["max_weight"] => string(4) "5.00"["shipping_method"] => string(6) "Ground"["shipping_rate"] => string(4) "8.00"}
[1] => object(Shipping\Model\Shipping)#385 (5) {
["shipping_id"] => NULL
["min_weight"] => string(4) "6.00"["max_weight"] => string(5) "10.00"["shipping_method"] => string(6) "Ground"["shipping_rate"] => string(5) "12.00"}
}
["Expedited"] => array(4) {
[0] => object(Shipping\Model\Shipping)#388 (5) {
["shipping_id"] => NULL
["min_weight"] => string(4) "0.00"["max_weight"] => string(4) "5.00"["shipping_method"] => string(9) "Expedited"["shipping_rate"] => string(5) "12.00"}
}
}

Каждый раз, когда я бегу array_column за max_weight Я получаю пустой массив в результате. Я должен использовать возвращенный массив для max(),
Есть ли обходной путь для этого?

1

Решение

v7.0.0: Добавлена ​​возможность для входного параметра быть массивом объектов.

Источник: https://secure.php.net/manual/en/function.array-column.php

2

Другие решения

array_column правильно работает для меня в PHP 7. Вот пример …

<?php
$shippingMethods = array("Ground" => array());

$gMethod = new stdClass();
$gMethod->shipping_id = NULL;
$gMethod->min_weight = "0.00";
$gMethod->max_weight = "5.00";
$gMethod->shipping_method = "Ground";
$gMethod->shipping_rate = "8.00";

$shippingMethods["Ground"][] = $gMethod;

$gMethod = new stdClass();
$gMethod->shipping_id = NULL;
$gMethod->min_weight = "6.00";
$gMethod->max_weight = "10.00";
$gMethod->shipping_method = "Ground";
$gMethod->shipping_rate = "12.00";

$shippingMethods["Ground"][] = $gMethod;

$shippingMethod = "Ground";
$result = max(array_column(($shippingMethods[$shippingMethod]), "max_weight"));

echo $result;
?>
1