如何添加到数组而不是更改它的第一个值?

时间:2018-01-14 21:23:20

标签: php arrays add cart

嘿,所以基本上我试图制作一个购物车,我希望id产品在一个数组中,以便我可以在cookie中序列化它们15天,问题我每次按下按钮"添加到购物车"它会更改以前的ID,而不是添加到数组中,我每次尝试进行循环并更改索引,并且我尝试添加$cart[]=$itemId;array_push();函数似乎没什么用。

    if (isset($_POST['item'])) {
    $item = $_POST['item'];
    $panier = array();
    $panier[] = $item;
    print_r($panier);
    }

只是为了解释代码,当按下“添加到购物车”按钮时将使用此代码,并从post变量中保留产品ID,然后每次添加到数组中,而不是我只获得数组中的单个值每次按下按钮添加都会不断变化。

2 个答案:

答案 0 :(得分:0)

那是因为你每次都在创建一个新数组,然后只为它添加一个值。删除$panier = array()以避免每次都创建新数组。

将@ IncredibleHat的建议结合到工作示例中:

$item = 0;
while($item <= 5) {
    if (!isset($panier)) { $panier = array(); }
    $panier[] = $item;
    $item++;
}

print_r($panier);

请注意,如果删除if(!isset($panier),则$panier最终只包含最后一个值,因为它会重新初始化以清空循环中的每次迭代。

答案 1 :(得分:0)

除了不使用请求之间存在的存储空间外,您的方法还会阻止人们购买多件商品:

 <?php
 session_start();
 if (isset($_POST['item'])) {
    $_SESSION['panier'][$_POST['item']]=
      isset($_SESSION['panier'][$_POST['item']) ?
      $_SESSION['panier'][$_POST['item']] + 1   :
      1;
 }