0

$_GET 変数を取り、それを $_SESSION 変数に入れる単純なショッピング カートを作りたかったのです。私が試したコードは次のとおりです。

<?php 
    session_start();
    if (is_numeric($_GET['add'])) $_SESSION[(string)$_GET['add']] = 1; ?>

私のアイテムIDは数値であるため、最初にチェックして、ランダムなものがセッション変数に追加されるのを止めます。次に、var_dump を実行して結果を確認します。?add=102 でコードを初めて実行すると、次のようになります。

array(1) { [102]=> int(1) }

次に、?add=108 を指定してスクリプトを再度実行すると、次のようになります。

array(1) { [108]=> int(1) }

私が欲しいのは:

array(2) { ["102"]=> int(1), ["108"]=> int(1) }

私は何を間違っていますか?私のコンセプトは、$_GET 変数を文字列に変換し、数量 1 と $_GET の文字列値を $_SESSION に関連付けて格納することです。これにより、IDが同じでない限り、アイテムをいくつでも追加できるはずです。これが私が望んでいることです。

私が試した代替手段は次のとおりです。

strval($_GET['add']), 
(string)($_GET['add']), 
$_GET['add']

何も機能していないようです。

どんな助けでも大歓迎です。

4

2 に答える 2

0

これはSatyaのコメントとmthieの回答の融合であることに気づきましたが、完全な回答は

  1. 構築している配列を独自の名前付きの場所にカプセル化することをお勧めします。
  2. add toそれではなく毎回配列にする必要がありoverwriteます

だから試してみてください

<?php
    session_start();
    if(is_numeric($_GET['add'])) {
       $_SESSION['add'][][(string)$_GET['add']] = 1;
    }
?>
于 2013-08-14T09:18:25.430 に答える