2012-02-19 5 views
-1

商品をショッピングカートから取り除くコードを書いています。 unset($_SESSION['cart'])を使用してセッション変数全体を設定解除するのではなく、個々の配列要素を対象にしたいと思います。アイテム行のremoveボタンを押すと、変数'isbn'に格納された一意のIDが送信されるとします。PHPが要素ごとにセッション変数を設定解除しました

なぜこれは機能しませんか? unset($_SESSION['cart'][$_POST['isbn']]) ;

私の回避策:

$isbn[] = $_POST['isbn'] ; 
$_SESSION['cart'] = array_diff($_SESSION['cart'],$isbn); 
+1

あなたが示すものはうまくいくはずです。これは基本的なデバッグを必要とします: '$ _POST ['isbn']'には何が入っていますか?セッション配列の値と100%一致していますか? 'print_r()'を使って配列を出力し、値を再確認してください。 –

+0

私は問題が[9] => $ _POST ['isbn']が実際のVALUEである可能性があると思います。 9780192814968これが機能するには、私はどのキーを解除したいのかをプログラムに伝える必要があります – raoulbia

+0

'$ isbn'の値は文字列で、' $ _SESSION ['cart'] 'のキーは整数ですか? – thetaiko

答えて

0

はそれを得ました!まさにこの2行で何が起こるか

header('Location: .') ; 
exit() ; 

::)

foreach ($_SESSION['cart'] as $key => $val) 
    { 
     if($val == $_POST['isbn']) 
     { 
      unset($_SESSION['cart'][$key]) ; 
      header('Location: .') ; 
      exit() ; 
     } 
    } 

はしかし、私は背後にある魔法の正確わからないんだけど?これを省略するとなぜ機能しないのですか?

+0

所在地:。理論的にはブラウザをリフレッシュして(現在のページにリダイレクトする)、終了するとスクリプトが終了します(die()に似ています):http://php.net/manual/en/function.exit.php – Tyzoid

関連する問題