php多维数组 - 值减1

时间:2013-11-19 17:18:21

标签: php multidimensional-array array-splice

我的多维数组遇到了问题。

我在数组中有各种各样的项目。

每个项目的名称和数量都会显示在屏幕上,并带有 - 和+按钮,可以将每个项目的数量改为1.每个按钮都是一个回显到同一页面的表格。

以下示例是单击 - 按钮时调用的函数。它应该从项目的数量中减去一个。

正确地从数量中扣除一个,并且item_id是正确的。但是,它没有更新正确的数组项。实际上它似乎是在创建一个新的数组项目,因为当按下减号按钮时,新项目会出现在购物篮中的其他项目下面。

我认为我没有在array_splice调用中引用正确的数组项。我不认为我应该在“array_splice($ _ SESSION [”cart_array“]”之后说“$ thisKey”。

但是,我不确定如何正确引用我想要的数组项。

请告知。

代码:

if (isset($_POST['itemMinus']) && $_POST['itemMinus'] != "") {
// Access the array and run code to remove that array index
$thisKey = $_POST['itemMinus'];
$thisKeyQuantity = $_POST['itemMinusQuantity'];
if (count($_SESSION["cart_array"]) <= 1) {
    unset($_SESSION["cart_array"]);
} else {
    array_splice($_SESSION["cart_array"], $thisKey, 1, 
 array(array("item_id" => $thisKey, "quantity" => $thisKeyQuantity - 1)));
     }
 }

/ * ** * **** /

解决方案:

非常感谢Jeroen Bollen对解决方案的贡献。 我的代码现在可以这样工作:

if (isset($_POST['itemMinus']) && $_POST['itemMinus'] != "") {
// Access the array and run code to remove that array index
$thisKey = $_POST['itemMinus'];
$thisKeyQuantity = $_POST['itemMinusQuantity'];
if (count($_SESSION["cart_array"]) <= 1) {
    unset($_SESSION["cart_array"]);
} else {
    $i=0;
    foreach($_SESSION['cart_array'] as $key => $value) {
        if($value['item_id'] == $thisKey) {
            array_splice($_SESSION["cart_array"], $i, 1, array(array("item_id" => $thisKey, "quantity" => $thisKeyQuantity - 1)));
            break;
             }
              else{$i++;}//end if
         }//end foreach
     }//end else
 }//end if POST

1 个答案:

答案 0 :(得分:0)

怎么样:

foreach($_SESSION['cart_array'] as $key => $value) {
    if($value['item_id'] == $thisKey) {
        $value['quantity']--;
        break; // Stop the loop, we're done
    }
}