特定の状況でのみ無限ループを引き起こすコードがあります。
これはショッピング カートの数量を変更するためのもので、現時点では、最後に追加されたアイテムの数量を変更するときにカートが正しく機能します。しかし、たとえば、カートに 3 つのアイテムがある場合、ループが際限なく実行されるため、1 番目または 2 番目のアイテムの数量を変更できません。
このコードの何が問題なのかわかりません。同様の問題が見つかりましたが、解決策はありません。
コードは次のようになります。
foreach ($_SESSION["cart"] as $each_item) {
$i++;
while (list($key, $value) = each($each_item)) {
if ($key == "item_id" && $value == $item_to_adjust) {
// That item is in cart already so let's adjust its quantity using array_splice()
array_splice($_SESSION["cart"], $i-1, 1, array(array("item_id" => $item_to_adjust, "quantity" => $quantity)));
} // close if condition
} // close while loop
if ($i > 50) die("manual termination");
} // close foreach loop
カートに 2 つのアイテムを追加したときに SESSION で var_dump を実行すると、次のように表示されます。
配列(2) { [0]=> 配列(2) { ["item_id"]=> 文字列(11) "100-C09EJ01" ["数量"]=> 文字列(1) "3" } [1]= > array(2) { ["item_id"]=> string(11) "700-CF220EJ" ["quantity"]=> int(1) } }
誰か助けてくれませんか?
前もって感謝します。