PHP中如何修改SESSION购物车数组内的quantity字段值
解决方法
你已经匹配到了对应商品的数组键$key,直接按多维数组的层级赋值即可完成更新,修改后的代码如下:
if (isset($_POST['action']) && $_POST['action']=="change"){ // 可先做参数合法性校验,避免非法值写入 $pid = intval($_POST["pid"]); $new_quantity = intval($_POST['quantity']); if($new_quantity < 1) { // 数量不能小于1,可根据业务需求补充异常提示逻辑 echo "商品数量不能小于1"; return; } foreach($_SESSION["shopping_cart"] as $key => $value) { if('product-'.$pid == $key){ echo "found"; // 直接通过键层级赋值更新quantity字段 $_SESSION["shopping_cart"][$key]["quantity"] = $new_quantity; break; } } }
如果想用引用方式简化写法也可以,注意foreach结束后必须unset引用变量,避免后续操作数组时出现异常:
foreach($_SESSION["shopping_cart"] as $key => &$value) { if('product-'.$pid == $key){ $value["quantity"] = $new_quantity; break; } } unset($value); // 必须加这行销毁引用
内容的提问来源于stack exchange,提问作者Nidhi
相关产品推荐
相关产品推荐

