В PHP 5.2 единственный способ сделать это - перебрать массив.
$max = null;
foreach ($arr as $item) {
$max = $max === null ? $item->dnum : max($max, $item->dnum);
}
Примечание: Я добавил результат к 0, потому что если все значения dnum отрицательны, то принятое сейчас решение даст неверный результат. Вам нужно посеять максимум с чем-то разумным.
В качестве альтернативы вы можете использовать array_reduce()
:
$max = array_reduce($arr, 'max_dnum', -9999999);
function max_denum($v, $w) {
return max($v, $w->dnum);
}
В PHP 5.3+ вы можете использовать анонимную функцию:
$max = array_reduce($arr, function($v, $w) {
return max($v, $w->dnum);
}, -9999999);
Вы также можете использовать array_map()
:
function get_dnum($a) {
return $a->dnum;
}
$max = max(array_map('get_dnum', $arr));