在前面,我想澄清我不正在寻找找到最大的解决方法 - 我已经有了实现该目标的解决方案。我很好奇的是为什么 max(array_push())
不起作用。
我有一个包含许多值的数组,并希望找到该数组中特定值的最大值。现有数组:
$array1 = array(2,6,1,'blue','desk chair');
基本思想是创建一个由这些指定值组成的新数组,然后找到该新数组的最大值。我试图让这项工作全部在一条线上运作:
$max = max(array_push($array2, $array1[0], $array1[1], $array1[2]));
//this doesn't work at all, since $array2 doesn't already exist, as per the PHP manual
我更改为代码以首先创建$array2
,但当时没有分配值,只是为了查看代码是否有效。
$array2 = array();
$max = max(array_push($array2, $array1[0], $array1[1], $array1[2]));
//$array2 is populated, but $max is not assigned
显而易见的解决方案是在创建时为$array2
分配值,然后单独使用max()
。我只是好奇为什么max(array_push())
找不到最大值,因为复合函数通常从内到外运行。
谢谢。
答案 0 :(得分:1)
max
需要一个数组才能使用,但是array_push
返回一个整数,实际上是通过引用使用提供的数组,你必须这样做:
$array2 = array();
array_push($array2, $array1[0], $array1[1], $array1[2])
$max = max($array2);
或者选择:
$array2 = array($array1[0], $array1[1], $array1[2]);
$max = max($array2);
第三种选择(虽然不是最干净的选择):
$array2 = array();
$max = max($array2 = array_merge($array2, [$array1[0], $array1[1], $array1[2]]));
供参考,见:
答案 1 :(得分:0)
您也可以使用array_slice()
:
$max = max(array_slice(
$array1,
0,
3
));
如果
供参考,见:
有关示例,请参阅: