0

成分ページに追加されたアイテムを保持するために SESSION 変数を使用しています。配列内の各キーを一意に識別する方法を知りたいです。

次の方法で成分を追加していますが、正常に機能しています。

$_SESSION['ingredients'][] = array($_POST['ingredient'],$_POST['qty']);

そこにいくつかの材料を貼り付けて配列を印刷すると、..

Array ( [0] => 1 [1] => 50 ) Array ( [0] => 2 [1] => 50 ) Array ( [0] => 3 [1] => 50 )

1、2、3 は成分 ID です。

ID に基づいて配列から成分を削除することは問題ありませんが、同じ成分を 2 回入れると、それらを区別できなくなります。キーのIDに増分番号を追加できるかどうか疑問に思っていましたか?

4

3 に答える 3

0

$_SESSION['ingredients'] の各アイテムには、すでに一意のインデックスがあります (この場合は 0 から始まります)。$_SESSION['ingredients'] 配列を印刷すると、次のようになります。

Array ( [0] => Array ( [0] => 1 [1] => 20 ) [1] => Array ( [0] => 2 [1] => 20 ) [2] => Array ( [0] => 1 [1] => 10 ) )

各配列の組み合わせには、その前に (0 から始まる) インデックスがあることに注意してください。

次のコードはこれを示しています。

<?php

session_start();
unset($_SESSION['ingredients']);

$_SESSION['ingredients'][] = array(1, 20);
$_SESSION['ingredients'][] = array(2, 20);
$_SESSION['ingredients'][] = array(1, 10); // adding the same ingredient again

print_r($_SESSION['ingredients']);

?>
于 2013-05-01T10:24:07.910 に答える
0

セッション配列のキーとして原料 ID を使用し、各値を要素として追加しないのはなぜですか

$_SESSION['ingredients'][$_POST['ingredient']][] = $_POST['qty'];

これはあなたに与えるでしょう

Array(
    [1] => array(
        [0] => 50,
        [1] => 50
    )

)

考えただけで、これがあなたのユースケースでうまくいくかどうかはわかりません

于 2013-05-01T10:12:11.160 に答える