与其他人发布的内容相比,您无法使用
min()/
max()函数来解决此问题,因为这些函数无法理解传入的数据结构(数组).这些函数仅适用于标量数组元素.
开始编辑
使用min()和max()似乎产生正确答案的原因与类型转换数组到整数有关,这是一个undefined behaviour:
The behaviour of converting to integer
is undefined for other types. Do not
rely on any observed behaviour, as it
can change without notice.
我上面关于类型转换的陈述是错误的.实际上,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
*/
转换为OP的问题,这表明直接使用min()和max()似乎产生正确结果的原因.数组的第一个元素是id值,因此min()和max()将首先比较它们,偶然产生正确的结果,因为最低的id是具有最低计数的id,而最高id是具有最高计数的id.
结束编辑
正确的方法是使用循环.
$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']);
}