array_reduce($array,$callback($carry,$item),$initial)用回调函数迭代计算数组元素,并返回最终结果。$carry携带上次迭代的值,如果是本次迭代的第一次,那么这个值是$initial。如果指定了$initial的值,该参数在处理开始前使用,或者处理结束后,被处理的数组为空时,返回此值。
<?php
function func1($x,$y){
$y += $x;
return $y;
}
$arr1 = array(1,2,3,4,5,6);
$return1 = array_reduce($arr1,"func1");
echo $return1;
结果:21
function func2($x,$y){
echo $x.' == '.$y."<br>";
$y *= $x;
return $y;
}
$arr2 = array(1,2,3,4);
$return2 = array_reduce($arr2,"func2");
echo $return2;
输出过程:
== 1
0 == 2
0 == 3
0 == 4
最终结果:0
$return2 = array_reduce($arr2,"func2",1);
echo $return2;
输出过程:
1 == 1
1 == 2
2 == 3
6 == 4
最终结果:24
$return3 = array_reduce(array(),"func1",'no data');
echo $return3;
输出:'no data'