2

这表示 $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

4 回答 4

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(...)
于 2012-06-27T03:27:10.907 回答
0

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

于 2012-06-27T03:25:50.997 回答
0

您从未初始化 $total,因此出现错误。

于 2012-06-27T03:26:41.007 回答
0

$total变量应在您的foreach. 该$sub变量应foreach在顶部的 , 内初始化。

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

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

于 2012-06-27T03:28:43.523 回答