Intereting Posts

найти max () определенного значения многомерного массива в php

См. Массив, например: здесь

В принципе, я хочу найти 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"];