1

既に作成されているセッション配列に追加しようとしている ID 番号の MySQL クエリからの配列があります。何らかの理由で、私のコードは、ID 番号をセッションに追加するだけでなく、既に配置されているセッション配列内に配列を追加しています。これが起こる原因は何ですか?

これが私のPHPです...

//Find members of this group and create an array to add to cart
            $deletedgroupmembersquery = "SELECT * FROM groupmember WHERE group_id='$groupid'";
            $deletedgroupmembers = mysql_query($deletedgroupmembersquery) or die('SQL Error :: '.mysql_error());

            if (mysql_num_rows($deletedgroupmembers) > 0) {
                $groupmembers = mysql_num_rows($deletedgroupmembers);
                $cart = array();
                while(($deletedmembersrow =  mysql_fetch_assoc($deletedgroupmembers))) {
                    $cart[] = $deletedmembersrow['contact_id'];
                }

                    //Add the array to the cart session
                    if (isset($cart)) {
                    $_SESSION['cart'] = array();
                    array_push($_SESSION[cart],$cart);
                    } else {
                    }

上記のコードが作成しているセッションは次のとおりです。

Array ( [cart] => Array ( [0] => Array ( [0] => 1362 [1] => 1371 [2] => 2241 ) )

助けてくれてありがとう。

4

2 に答える 2

2

$cartはすでに配列です。あなたがするとき:

array_push($_SESSION[cart],$cart);

のサブ配列としてプッシュしています$_SESSION['cart']。私はあなたがただ欲しいと思う:

$_SESSION['cart'] = $cart;
于 2013-03-14T02:05:40.200 に答える
0

$cart を $_SESSION[cart] にプッシュする前に配列として定義しているので、配列を配列にプッシュしています。次のようなことを試してください:

if (!empty($cart)) {
  $_SESSION['cart'] = array();
  foreach ($cart AS $item) {
    array_push($_SESSION['cart'], $item);
  }
}

また、array_push を while() 内に配置し、while() の前に $_SESSION['cart'] = array() を貼り付けることもできます。これにより、同じことが達成されます。

于 2013-03-14T02:05:27.607 に答える