将数组添加到会话数组

时间:2013-03-14 02:00:25

标签: arrays session array-push

我有一个MySQL查询ID数据的数组,我正在尝试添加到已创建的会话数组中。出于某种原因,我的代码是在会话数组中添加一个数组,而不仅仅是在会话中添加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 ) )

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

$cart已经是一个数组。当你这样做时:

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

你将它作为$_SESSION['cart']的子数组推送。我想你只想要:

$_SESSION['cart'] = $cart;

答案 1 :(得分:0)

在将$ cart推入$ _SESSION [cart]之前,你将$ cart定义为数组...所以你将数组推入数组。尝试这样的事情:

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

您也可以将array_push放在while()中,并在while()之前粘贴$ _SESSION ['cart'] = array(),它将实现相同的目的。