См. Массив, например: здесь
В принципе, я хочу найти max () для массива [] ['time'] в этом массиве. Я могу понять это, если я прохожу через него, но я надеялся, что было более элегантное решение.
Подумайте array_reduce
если вы хотите вычислить некоторое одиночное значение итеративно над массивом:
$max = array_reduce($array, function($a, $b) { return $a > $b['time'] ? $a : $b['time']; } );
Или вы можете использовать функцию утилиты, например:
function array_col(array $a, $x) { return array_map(function($a) use ($x) { return $a[$x]; }, $a); }
который будет использоваться как:
$max = max(array_col($array, 'time'));
Это более общая цель и может использоваться для других подобных вещей.
Сортируйте массив от наивысшего до самого низкого с точки зрения []['time']
и получите первое значение:
function sort_arr($item_1, $item_2) { return $item_2['time'] - $item_1['time']; } usort($arr, 'sort_arr'); // $arr[0] is the item with the highest time
Вы всегда можете сортировать массив и принимать первое или последнее значение соответственно. Вы можете использовать usort для сортировки массива, предоставляя собственную функцию сравнения, чтобы отразить вашу структуру.
Вот простой пример:
$foo[1]["time"] = 2323443; $foo[2]["time"] = 343435; $foo[3]["time"] = 13455; $foo[4]["time"] = 9873634; $foo[5]["time"] = 82736; $foo[6]["time"] = 9283; function cmp($a, $b) { if ($a["time"] == $b["time"]) { return 0; } return ($a["time"] < $b["time"]) ? -1 : 1; } usort($foo, "cmp"); $max = $foo[count($foo)-1]["time"];