gpt4 book ai didi

php - foreach 只检查数组中的第一个值,然后创建新值

转载 作者:行者123 更新时间:2023-11-28 15:58:19 25 4
gpt4 key购买 nike

我正在开发一个 php 购物车,我试图让购物车更新商品的数量,而不是为同一商品创建新条目。但是,当输入已在购物车中的产品时,我的 foreach 语句仅根据第一个数组值检查它,然后为该产品创建一个新条目。

有人可以帮我解决这个问题并弄清楚为什么它不检查整个数组列表吗?

这是我的更新方法:

function CheckForExistingEntry($id, $setOf, $quantity) {
// if the product ID and the SET OF is equal in multiple products, update the quanity instead of making new records
foreach ($_SESSION['shopping_cart'] as $key => $product) {
if ($id == $product['product_id'] && $setOf == $product['setOf']) {
// Update Cart Value
$_SESSION['shopping_cart'][$key]['quantity'] += $quantity;
$_SESSION['shopping_cart'][$key]['price'] *= $_SESSION['shopping_cart'][$key]['quantity'];
break;
} else {
// Add New Cart Value
AddToCart($id, $setOf, $quantity);
break;
}
}
}

最佳答案

您在 ifelse 中都有一个 break;,这意味着它总是会在第一次迭代后中断。

让我们删除 else block ,因为我们只想在未找到的情况下继续下一个元素。

试试这个:(我已经评论了更改):

// Define a variable that holds the state.
$updated = false;

foreach ($_SESSION['shopping_cart'] as $key => $product) {
if ($id == $product['product_id'] && $setOf == $product['setOf']) {
// Update Cart Value
$_SESSION['shopping_cart'][$key]['quantity'] += $quantity;
$_SESSION['shopping_cart'][$key]['price'] *= $_SESSION['shopping_cart'][$key]['quantity'];

// Set updated as true and break the loop
$updated = true;
break;
}
}

if (!$updated) {
// We didn't update any items, add a new item instead
AddToCart($id, $setOf, $quantity);
}

关于php - foreach 只检查数组中的第一个值,然后创建新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40641121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com