Foreach条件问题


Foreach condition issue

我有下面的代码,但问题是它不起作用。该代码旨在更新用户输入的任何内容的数量。

如果我回显$type $size $quantity,我可以看到该值已被发送。

foreach ($_SESSION["cart_array"] as $array_key=>$each_item)我认为问题出在这个上,但我似乎看不出来。

请有人看一看,看看他们是否能找到问题。感谢

问题

如果我在表格中输入要更新的数字。它不会更新。

PHP

 <?php
   session_start();
    ?>
    <?php
if (isset($_POST['item_to_adjust']) && isset($_POST['size']) && isset($_POST['type'])) {
    $item_to_adjust = $_POST['item_to_adjust'];
    $type = $_POST['type'];
    $size = $_POST['size'];
    $quantity = $_POST['quantity'];
    $quantity = preg_replace('#[^0-9]#i', '', $quantity); // filter everything but numbers
    if ($quantity >= 100) { $quantity = 99; }
    if ($quantity < 1) { $quantity = 1; }
    if ($quantity == "") { $quantity = 1; }
    $i = 0;
    foreach ($_SESSION["cart_array"] as $array_key=>$each_item) { 
     $i++;
              if ($each_item['item_id'] == $item_to_adjust  && $each_item['size'] == $size && $each_item['type'] == $type) {
                      $_SESSION["cart_array"][$array_key]['quantity']+=$quantity;
                  } 
              } 
}
?>

HTML

<form action="cart.php" method="post">
        <input name="quantity" type="text" value="' . $each_item['quantity'] . '" size="1" maxlength="2" />
        <input name="adjustBtn' . $item_id . '" type="submit" value="Update" />
        <input name="size" type="hidden" value="' . $each_item['length'] . '" />
        <input name="type" type="hidden" value="' . $each_item['Category'] . '" />
        <input name="item_to_adjust" type="hidden" value="' . $item_id . '" />
        </form>

我不确定,但您面临的问题可能是由于以下原因:试着更换这条线路

if ($each_item['item_id'] == $item_to_adjust  && $each_item['size'] == $size && $each_item['type'] == $type)

这行:

if ($each_item['item_id'] == $item_to_adjust  && $each_item['length'] == $size && $each_item['Category'] == $type)

在您的会话变量中,没有名为"size"或"type"的键,因此基本上,当您检查条件$each_item['size']=$size和$each_item['type']==$type时,它在If条件中给出false(或者在您的情况下是Notice:定义不足的Index:type),因此不执行If主体,从而导致不更新$_session 中的"quantity"值

根据您的意见:尝试更换行

$_SESSION["cart_array"][$array_key]['quantity']+=$quantity;

带有:

$_SESSION["cart_array"][$array_key]['quantity'] = $quantity;