数组减少PHP

时间:2011-09-29 09:31:07

标签: php

我有一个:

$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
你能告诉我这有什么问题吗?

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;