Это моя текущая структура массива:
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()
,
Есть ли обходной путь для этого?
v7.0.0: Добавлена возможность для входного параметра быть массивом объектов.
Источник: https://secure.php.net/manual/en/function.array-column.php
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;
?>