我有一个:
$arr = array(321,0.4,0.8,1.2);
$result = array_reduce($arr,create_function('$op1,$op2','return $op1-=$op2;'));
echo $result; //the result should be 318.6, but i got -323.4
你能告诉我这有什么问题吗?
答案 0 :(得分:6)
array_reduce函数有3个参数。第三个是$ initial。
默认情况下为NULL。你也应该填写这个。看这里:http://nl.php.net/array_reduce
如果可选的初始值可用,它将在 进程的开始,或者作为数组的最终结果 空。
答案 1 :(得分:2)
只需减去所有元素的总和,但第一个元素中的第一个元素:
echo array_shift($arr) - array_sum($arr); # 318.6
答案 2 :(得分:0)
...试
array_reduce($arr,
create_function('$op1,$op2','print "$op1, $op2\n";
return $op1-=$op2;'));
所有人都应该清楚。
答案 3 :(得分:0)
您正以错误的方式使用array_reduce
。数组中的第一项需要移出数组并用作初始值。
$arr = array(321,0.4,0.8,1.2);
$initial = array_shift($arr);
$result = array_reduce($arr, create_function('$op1,$op2','return $op1-=$op2;'), $initial);
echo $result;