如果使用PHP的In_数组为true,如何向qty添加1

如果使用PHP的In_数组为true,如何向qty添加1,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我正在尝试将1添加到会话['cart']['qty']中,如果它不是新条目,并且如果它是新条目,则只会将该条目添加到会话['cart'] if(!isset($\u会话['cart'])){ $item=array('pid'=>$p['productID'], “数量”=>1 ); $\u会话['cart'][0]=$item; }否则{ $item_id=array_列($_SESSION['cart'],“pid”); if(在数组中($p['productID',$item\u id))

我正在尝试将1添加到
会话['cart']['qty']
中,如果它不是新条目,并且如果它是新条目,则只会将该条目添加到
会话['cart']

if(!isset($\u会话['cart'])){
$item=array('pid'=>$p['productID'],
“数量”=>1
);
$\u会话['cart'][0]=$item;
}否则{
$item_id=array_列($_SESSION['cart'],“pid”);
if(在数组中($p['productID',$item\u id)){
$to_update='数量';
$new\u数量=5;
$base=$\会话['cart']['pid']['qty'];
}否则{
$count=count($_会话['cart']);
$item=array('pid'=>$p['productID'],
“数量”=>1
);
$\会话['cart'][$count]=$item;
}
}

您可以使用$pid作为唯一的索引来跟踪

$pid=$p['productID'];
if(!isset($_SESSION['cart'][$pid])){
    $item = array(
        'pid'  =>  $pid,
        'qty'  =>  1
    );
    $_SESSION['cart'][$pid] = $item;
}else{
    /*
     * add 1 qty
     */
    if(isset($_SESSION['cart'][$pid])) {
        $_SESSION['cart'][$pid]['qty']= ($_SESSION['cart'][$pid]['qty'] +1);
    }
}

您也可以使用类似的减少数量

您没有更改会话变量。试试这个:

if (!isset($_SESSION['cart'])) {
    $item = array('pid'  =>  $p['productID'],
                  'qty'  =>  1
                );
    $_SESSION['cart'][0] = $item;
} else {
    $item_id = array_column($_SESSION['cart'], "pid");

    if (in_array($p['productID'], $item_id)) {
        $new_qty = 5;
        $_SESSION['cart'][$p['productID']]['qty'] += $new_qty;
    } else {
        $count = count($_SESSION['cart']);
        $item = array('pid' => $p['productID'],
                      'qty' => 1
                    );
        $_SESSION['cart'][$count] = $item;
    }
}
这一行没有意义

$base = $_SESSION['cart']['pid']['qty'];
多维数组不是这样工作的。

您正试图从数组
$\u会话['cart']['pid']
访问密钥
qty
,但该密钥不存在。这两个键是兄弟键。

谢谢您的回答,但如果我选择购买两个产品,并尝试增加我已添加到购物车中的一个产品的数量,则会出现另一个问题。它不会合并,它将创建新的产品row@EcnerolOdirrag好的,当然,只要你选择的答案对你有用!到底发生了什么?