в отличии от того, что другие выложили, вы не можете использовать функции в min()
/max()
этой проблемы, поскольку эти функции не понимают структуру данных (массив), которые прошли в. эти только функциях работа для элементов скалярного массива.
НАЧАТЬ РЕДАКТИРОВАНИЕ
Причина, почему использование min()
и max()
, кажется, дают правильный ответ связан тип-литейные массивы целых чисел, является undefined behaviour:
Поведение преобразования в целое число не определено для других t ypes. Не следует полагаться на любое наблюдаемое поведение, так как он может быть изменен без предварительного уведомления.
Мое высказывание выше о типовом литье было неправильным. Фактически min()
и max()
работают с массивами, но не в том, как OP нуждается в их работе. При использовании min()
и max()
с несколькими массивами или массив массивов элементов сравниваются поэлементно слева направо:
$val = min(array(2, 4, 8), array(2, 5, 1)); // array(2, 4, 8)
/*
* first element compared to first element: 2 == 2
* second element compared to second element: 4 < 5
* first array is considered the min and is returned
*/
В переводе на проблемы в ФП в этом показывает причину, почему прямое использование min()
и max()
, кажется, дать правильный результат.Первые элементы массивов являются id
-значения, поэтому min()
и max()
будет сравнивать их первый, кстати в результате правильного результата, так как низкий id
является один с самым низким count
и самой высокой id
является один с самым высоким count
.
END EDIT
Правильный путь будет использовать цикл.
$a = array(
array('id' => 117, 'name' => 'Networking', 'count' => 16),
array('id' => 188, 'name' => 'FTP', 'count' => 23),
array('id' => 189, 'name' => 'Internet', 'count' => 48)
);
$min = PHP_INT_MAX;
$max = 0;
foreach ($a as $i) {
$min = min($min, $i['count']);
$max = max($max, $i['count']);
}
+1 Я столкнулся с этой проблемой сегодня, и я просто сделал цикл. Любопытно, какие существуют другие методы. – MitMaro
Если есть какая-то функция, которая сделает это, она будет реализована с помощью циклов, так что же так плохо, используя ваши собственные функции ?! –
@ Светлозар Ангелов: Для функций PHP петли будут записаны на C, а не на PHP, поэтому они, как правило, быстрее. –