Ранее предложенные ответы не объясняли необходимость включения значения $initial
в array_reduce()
. Решение не сработало из-за этого.
Этот работает для меня (PHP 5.3.13):
$array = array(
array(
'name' => 'something',
'value' => 56
),
array(
'name' => 'else',
'value' => 54
),
array(
'name' => 'else',
'value' => 58
),
array(
'name' => 'else',
'value' => 78
)
);
$object = array_reduce($array, function($a, $b){
return $a['value'] < $b['value'] ? $a : $b;
}, array_shift($array));
print_r($object);
Это даст мне:
[0] => Array
(
[name] => else
[value] => 54
)
Тогда как предыдущее решение дало мне null
. Я предполагаю, что PHP <5.3 потребует, чтобы аналогичное начальное значение было указано в <code>array_reduce().