+ -
当前位置:首页 → 问答吧 → [非Bug]p132函数实参有误

[非Bug]p132函数实参有误

时间:2007-08-31

来源:互联网

add_up(2,3)
    add_up(11,5)
    add_up(36,7)
=>
    add_up(,2)
    add_up(4,3)
    add_up(13,5)
    add_up(38,7)

[ 本帖最后由 Haohappy 于 2007-8-31 23:07 编辑 ]

作者: lily64   发布时间: 2007-08-31

这里没有错误。

数组第一个元素为2,所以add_up()这个函数是从2这个元素开始的,也就是add_up(2,3)。
你所用的add_up(,2)这种函数方式是会出错的。

[ 本帖最后由 Haohappy 于 2007-8-31 23:06 编辑 ]

作者: Haohappy   发布时间: 2007-08-31

我是把例子里加了一句echo,运行如上的结果。
    function add_up ($running_total, $current_value) {
      echo $running_total.','. $current_value.'<br>';//加入echo当前值
      $running_total += $current_value * $current_value;
      return $running_total;
    }
如果是下面这样:
add_up(2,3)
add_up(11,5)
add_up(36,7)
那么36+7*7=85,跟实际结果87也不符啊。怎么回事呢?

作者: lily64   发布时间: 2007-08-31

原因在于你的echo语句放在运算之前了,所以少了最后一次的运算。

请执行以下完整代码,就明白了:

function add_up ($running_total, $current_value) {     
          echo '运算前总和:'.$running_total.' 当前值:'.$current_value.'<BR>';
         $running_total += $current_value * $current_value;
          echo '运算后总和:'.$running_total.'<BR>';
          return $running_total;          
    }

$numbers =  array(2,3,5,7);
$total = array_reduce($numbers,'add_up');

echo '最后总和为:'.$total;

作者: Haohappy   发布时间: 2007-08-31