-1

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;

私を助けてくれてありがとう :)

4

3 に答える 3

2

を使用する+=には、最初に設定する必要があります。そうしないと、警告が表示されます。

その上にポップする$total=0;と、甘いはずです。

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

代入演算子の詳細については、こちらを参照してください。

于 2012-08-29T09:36:43.217 に答える
2

たとえば、 your$_SESSIONが空の場合、変数は初期化されません。また、演算子+=は、変数に何かを追加することを意味します。これは、変数が事前に設定されていない場合に通知をトリガーします。

$total = 0;ループの前に置くことができます:

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

とにかく、常に変数を初期化することをお勧めします。これにより、いくつかの悪い驚きから身を守ることができます。

于 2012-08-29T09:37:16.550 に答える
1

これを関数の最初の行として追加します。

$total = 0;

ループが初めて実行されるため、 $total は既知の変数ではありません

于 2012-08-29T09:36:52.197 に答える