0

特定の状況でのみ無限ループを引き起こすコードがあります。

これはショッピング カートの数量を変更するためのもので、現時点では、最後に追加されたアイテムの数量を変更するときにカートが正しく機能します。しかし、たとえば、カートに 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) } }

誰か助けてくれませんか?

前もって感謝します。

4

1 に答える 1