まず、私が達成しようとしていることを説明しましょう。
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が存在する場合、数量は'+1を受け取ります。
ここまでは順調ですね
ここで実際の問題について、シナリオをスケッチしてみましょう。
アイテム500を購入します->配列に含まれるもの:id = 500、quantity = 1
アイテム500を購入します->配列に含まれるもの:id = 500、quantity = 2
アイテム600を購入->配列に含まれるもの:id = 500、quantity = 2、id = 600、quantity = 1
この後それはうまくいかない
次に、アイテム500または600を購入すると、他のアイテムがアレイから削除されます。したがって、アイテム500を購入すると、アイテム600とその数量が配列から削除されます。
私は何時間も困惑してきましたが、間違いを見つけることができません。私は論理的な何かを見落としていることを知っています。それぞれのでうまくいかないと思います。