如何在foreach循环中进行数学计算?

时间:2014-02-12 16:22:49

标签: php

我是php的新手,我有一个总和的功能。下面是:

<?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,这是错误吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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);
}