2014-02-12 56 views
1

我是新来的PHP,我有一个功能来完成。下面是继承人:如何在foreach循环内进行数学计算?

<?php 
class math { 
    public function add($data) { // add("1,2,3") separated by comma 
     $data=explode(",", $data); 
     foreach($data as $val){ 
      echo $val +=$val; 
     } 
     return $val; 
    } 

} 
$class_math = new math; 
echo $class_math->add("1,2,3,4"); 
?> 

但是,这应该给结果= 10,但它给结果8,哪里的错误?

回答

4

你覆盖的$val在循环的价值。

public function add($data) { // add("1,2,3") separated by comma 
    $data=explode(",", $data); 
    $total = 0; 
    foreach($data as $val){ 
     echo $total+=$val; 
    } 
    return $total; 
} 

仅供参考,更简单的方式来做到这一点可能是使用array_sum()

public function add($data) { // add("1,2,3") separated by comma 
    $data=explode(",", $data); 
    return array_sum($data); 
} 
4

你有重复的变量名:$val

public function add($data) { // add("1,2,3") separated by comma 
    $collect = 0; 
    $data=explode(",", $data); 
    foreach($data as $val){ 
     $collect += $val; 
    } 
    return $collect; 
} 

在最后一次迭代$val4,所以它4+4=8