显示一个输入数组/现有数组,一些cart_array以及您希望现有数组如何更改

时间:2016-12-15 18:47:11

标签: php arrays session shopping-cart

我尝试使用size更改产品中的<option>并使用array_splice()但不起作用,我也会爆炸size值,我想要客户选择其他大小来更改会话购物车数组但是给我这个错误

  

(!)警告:array_splice()期望参数2为long,第89行的E:\ wamp \ www \ MyOnlineStore \ cart.php中给出的数组

这样:

array_splice($_SESSION["cart_array"],  array(array("item_id" => $item_to_adjust_size, "size" => $size)));

脚本

//       Section 3a (if user chooses to adjust item SIZE)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if (isset($_POST['item_to_adjust_size'])) {
    // execute some code
    echo "merge";
    $item_to_adjust_size = $_POST['item_to_adjust_size'];
    $size = $_POST['size'];
    foreach ($_SESSION["cart_array"] as $my_ArraySize) { 
              while (list($key, $value) = each($my_ArraySize)) {
                  if ($key == "item_id" && $value == $item_to_adjust_size) {
                      // That item is in cart already so let's adjust its quantity using array_splice()
                      array_splice($_SESSION["cart_array"],  array(array("item_id" => $item_to_adjust_size, "size" => $size)));
                  } // close if condition
              } // close while loop
    } // close foreach loop
}

更改大小数组的表单

$myArraySize = explode(' ',  $size);
$cartOutput .= '<td><form action="cart.php" method="post"><select name="size">';
        foreach($myArraySize as $my_ArraySize)
        {
        $cartOutput .= '<option   value="'.$my_ArraySize.'">'.$my_ArraySize.'</option>';
        }
        $cartOutput .='</select><input name="item_to_adjust_size" type="hidden" value="' . $item_id . '" />     
        <input name="adjustBtn' . $item_id . '" type="submit" value="changesizes" />';

        $cartOutput .= '</form></td>';

我不知道如何解决这个问题,抱歉,我是脚本编写新手。

1 个答案:

答案 0 :(得分:0)

它告诉你完全错误是什么 - 第二个参数需要是int,而不是数组。阅读this。你可能意味着:

array_splice(array(array("item_id" => $item_to_adjust_size, "size" => $size)),$_SESSION["cart_array"]);

第二个参数是将删除所有内容的偏移量。这也没有多大意义,因为你只有一个项目的数组(包含一个数组),所以你必须考虑你在这里尝试做什么。您也不能使用此行中的任何区域进行保存 - 它完全没用。您还需要将某些内容保存到变量或更改现有数组。

您可能需要:

$my_ArraySize["size"] = $_SESSION["cart_array"]

或类似的东西,但不确定。