2013-03-14 141 views
1

我有一个ID数字的MySQL查询数组,我尝试将其添加到已创建的会话数组中。出于某种原因,我的代码已经在Session Array中添加了一个数组,而不仅仅是将ID号添加到Session中。是什么导致了这种情况发生?将数组添加到会话数组

这是我的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)) 

感谢您的帮助。

回答

0

您将$ cart定义为一个数组,然后将它推入$ _SESSION [cart]中...所以您将数组推入数组中。尝试是这样的:

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

你也可以放置array_push你而内(),和前一阵贴$ _SESSION [“购物车”] =阵列()(),它会实现一样。

+0

你的建议完美的工作,除了它取代了已经存在的数组。我如何将数组添加到购物车数组中已有的值? – Budove 2013-03-14 02:16:20

+0

如果$ _SESSION ['cart']里面已经有值,则删除$ _SESSION ['cart'] = array()行。这只是覆盖无论它可能已经是一个空的数组。 array_push会将新元素推送到数组的末尾,而不管数组中可能已有的元素。 – mchitten 2013-03-14 02:19:07

1

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

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

你正在推动它作为$_SESSION['cart']的子阵列。我想你只是想:

$_SESSION['cart'] = $cart; 
+0

像其他答案一样,这是否不会替代已经存在的购物车会话?如何将$ cart中的值添加到已经存在的会话数组中? – Budove 2013-03-14 02:17:25

+0

为什么你做'$ _SESSION ['cart'] = array();'如果你不想更换已经存在的购物车? – Barmar 2013-03-14 02:20:24