为什么max(array_push())找不到max?

时间:2017-09-08 14:51:33

标签: php arrays max array-push

在前面,我想澄清我正在寻找找到最大的解决方法 - 我已经有了实现该目标的解决方案。我很好奇的是为什么 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())找不到最大值,因为复合函数通常从内到外运行。

谢谢。

2 个答案:

答案 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
));

如果

  • 您感兴趣的值按序列
  • 您知道序列的偏移长度

供参考,见:

有关示例,请参阅: