在PHP代码中得到未定义的变量

时间:2012-08-29 09:35:04

标签: php variables

运行我的php

时收到错误消息

然而结果出来了

这是我的代码

function cart() {
    foreach($_SESSION as $name => $value) {
        if ($value>0) {
            if (substr($name, 0, 5) == 'cart_'){
                $id = substr($name, 5, (strlen($name)-5));
                $get = mysql_query('SELECT id, name, price FROM products WHERE id=' .mysql_real_escape_string((int)$id));
                while ($get_row = mysql_fetch_assoc($get)){
                    $sub = $get_row['price'] * $value;
                    echo $get_row['name'].' x '.$value.' @ &pound'.number_format($get_row['price'], 2).' = &pound'.number_format($sub, 2).' <a href="cart.php?remove='.$id.'">[-]</a> <a href="cart.php?add='.$id.'">[+]</a> <a href="cart.php?delete='.$id.'">[Delete]</a><br />' ;
                }
            }
            $total += $sub;
        }
    }
    echo $total;
}
?>

我收到了错误消息

 Notice: Undefined variable: total in C:\xampp\htdocs\shoppingcart\cart.php on line 54

第54行是

 echo $total;

我的代码出了什么问题?

我想我已经在

中定义了代码
 $total += $sub;

感谢您帮助我:)

3 个答案:

答案 0 :(得分:2)

要使用+=,需要先设置它,否则会收到警告。

在它上面弹出一个$total=0;你应该很好。

function cart() {
    $total=0;
    // rest of your code...

您可以进一步了解赋值运算符here

答案 1 :(得分:2)

如果您的$_SESSION为空,则该变量永远不会被初始化。此外,运算符+=表示向变量添加内容 - 如果事先未设置变量,则触发通知。

您可以将$total = 0;放在循环之前:

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

无论如何始终初始化变量是一种很好的做法,因此您可以避免一些不良的意外。

答案 2 :(得分:1)

将此添加为您函数的第一行:

$total = 0;

因为现在第一次循环运行,$ total不是已知的var