与其他人发布的相比,您不能使用min()
/max()
函数来解决这个问题,因为这些函数不理解传入的数据结构(数组)。这些函数仅适用于标量数组元素。
开始编辑
使用min()
andmax()
似乎产生正确答案的原因与将数组类型转换为整数有关,这是一种未定义的行为:
对于其他类型,未定义转换为整数的行为。不要依赖任何观察到的行为,因为它可能会在没有通知的情况下发生变化。
我上面关于类型转换的陈述是错误的。实际上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
count
id
count
结束编辑
正确的方法是使用循环。
$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']);
}