为什么变量说未定义?

时间:2012-06-27 03:24:02

标签: php variables undefined

这表示$ total和$ sub未定义为$ total + = $ sub。 $ sub在while循环中声明,$ sub都在函数内,因此它应该是一个局部变量。为什么我不能使用它?

public function cart() {
    foreach($_SESSION as $name=>$value){
        if (substr($name, 0, 5) == 'cart_') {
            if((int)$value > 0){
                $id = substr($name, 5, (strlen($name)-5));

                $st = $this->db->prepare("select id, name, price from deals where id=?");
                $st->bindParam(1, $id);
                $st->execute();

                while($cart_item = $st->fetch(PDO::FETCH_OBJ)){
                    $sub = $cart_item->price*$value;
                    echo $cart_item->name.' x '.$value.' @ '.$cart_item->price.' = '.$sub.' <a href="cart.php?add='.$id.'">[+]</a> <a href="cart.php?remove='.$id.'">[-]</a> <a href="cart.php?delete='.$id.'">[Delete]</a><br/>';
                }
            }
        }
        $total += $sub;
    }

}

4 个答案:

答案 0 :(得分:1)

如果

,这将是一个问题
            $st = $this->db->prepare("select id, name, price from deals where id=?");
            $st->bindParam(1, $id);
            $st->execute();

返回0结果。

$sub之前定义foreach并保持安全,$total

$sub = $total = 0;
foreach(...)

答案 1 :(得分:0)

未定义的变量是$ total,而不是$ sub。添加$ total = 0;到你的功能的顶部。

答案 2 :(得分:0)

你从未初始化$ total,因此错误。

答案 3 :(得分:0)

$total变量应该在foreach之上初始化。 $sub变量应在foreach内的顶部初始化。

$total = 0;
foreach ($_SESSION as $name => $value) {
    $sub = 0;
    ...

此外,您可以将$total += $sub;向上移动,使其位于内部while循环的正下方。

相关问题