首先让我解释一下我想要实现的目标:
我有一个用户项目数组,由 ID(item_id)和数量(例如 10 个项目)组成。如果用户购买了一个项目,它会被添加到包含数量的数组中。如果用户购买(在数组中)现有项目,则将“1”添加到数量中。
在这篇文章的帮助下,我非常接近:检查数组值是否存在于 PHP 多维数组中
这是我现在使用的代码:
$item_id = arg(1);
$quantity = '1';
$found = false;
$bought_items = null;
$data = null;
foreach ($user_items as $key => $data) {
if ($data['a'] == $item_id) {
// The item has been found => add the new points to the existing ones
$data['b'] += 1;
$found = true;
break; // no need to loop anymore, as we have found the item => exit the loop
}
}
if ($found === false) {
$bought_items = array('a' => $item_id, 'b' => $quantity);
}
$array = array($bought_items, $data);
如果 item_id 不存在,则将其添加到数组中 如果 item_id 存在,则数量将 'receive' +1
到目前为止,一切都很好
现在是实际问题,让我们勾画一下场景:
我购买项目 500 -> 数组包含:id=500,数量=1
我购买项目 500 -> 数组包含:id=500,数量=2
我购买项目 600 -> 数组包含:id=500,数量=2,id=600,数量=1
在这之后它出错了
然后我购买项目 500或600,从阵列中删除另一个项目。因此,当我购买商品 500 时,商品 600 及其数量将从数组中删除。
我已经困惑了几个小时,但找不到错误,我知道我忽略了一些合乎逻辑的东西。我认为每个人都会出错。