在php中编辑多维数组中的值

时间:2013-10-20 03:41:22

标签: php arrays multidimensional-array session-variables

我有一个名为Cart_array的会话,它以下列方式保存多维数组:

$_SESSION['Cart_array'] = array(
                1 => array(
                    "ID" => $pid,
                    "QTY" => 1
                )
            );

这是项目添加到购物车会话的方式。 pid是从另一种形式获得的

if (isset($_POST['pid'])) {
        $pid    = $_POST['pid'];
        if (!isset($_SESSION['Cart_array']) || count($_SESSION['Cart_array']) < 1) { //check if cart session is not set or empty
            $_SESSION['Cart_array'] = array(
                1 => array(
                    "ID" => $pid,
                    "QTY" => 1
                )
            );
        } else {
                array_push($_SESSION['Cart_array'], array(
                    "ID" => $pid,
                    "QTY" => 1
                ));

        } //end else
    } //end if

用户在一个函数中有一个包含以下内容的表单:

     <?php foreach ($_SESSION['Cart_array'] as $eachItem) {
            $itemID = $eachItem['ID'];
            $itemQty = $eachItem['QTY']; >?

        <input class="qty" name="quantity" type="number" value="<?php echo $itemQty;?>" />
        <input type="submit" name="qtyChange<?php echo $itemID;?>" value="Change Qty" />
        <input name="qtyOfItem" type="hidden" value="<?php echo $itemID?>"/> 
}

此表单将浏览Cart_array并在购物车中显示每件商品的数量。 我希望用户能够更改购物车中他们点击Change Qty按钮时选择的特定商品的数量 我不知道怎么回事呢?

3 个答案:

答案 0 :(得分:1)

您可以像这样编辑数组

您的数组

$list = array([0]=>
                   array(
                         [ID]=>'XYZ' 
                         [QTY]=>'1'
                         )
             ); 


    my_function()
   {
    $list=$_SESSION['Cart_array']; 
    global $list;
    $list[0]['QTY'] = '2'; //or this 2 value can be taken from user using jquery 
    }

my_function();

答案 1 :(得分:1)

对于提交的脚本,您希望遍历cart_array会话中的每个项目并按该ID查找,然后更改该项目的数量。

 foreach($_SESSION['cart_array'] as $index => $item){
   if($item['ID'] == $_POST['ID']){
     $_SESSION['cart_array'][$index]['quantity'] = $_POST['quantity'];
  }
 }

答案 2 :(得分:1)

只需从用户那里传递您的数量值

<?php
$_SESSION['Cart_array'] = array(
                1 => array(
                    "ID" => $pid,
                    "QTY" => 1
                )
            );

$_SESSION['Cart_array'][1]['QTY']=30;//Relaces the quantity from 1 to 30