在多维关联数组中获取值?

时间:2013-03-07 10:47:34

标签: php associative-array

我有一个SESSION数组 $ _ SESSION ['cart']

例如它的值为

Array
(
    [0] => 
    [1] => Array
        (
            [item_id] => 1420
            [item_qty] => 1
        )
    [2] => Array
        (
            [item_id] => 1522
            [item_qty] => 1
        )
)

现在假设我有 item_id = 1420

现在我想为 item_id = 1420 增加 item_qty ,同时我必须在该SESSION数组中设置它。

我尝试了什么:

  foreach($_SESSION['Cartquantity'] as $key => $d)
    {
         if(isset($d)) {
                   if($d['item_id'] == $_GET['item_id'])
                   {
                        $d['item_quntity'] = $d['item_quantity']+1;
                   }
           }
            else{

               }
   }

这不起作用?

7 个答案:

答案 0 :(得分:3)

您正在重复$_SESSION['Cartquantity']但已告诉我们该数组存储在$_SESSION['cart']

另外,这个:

$d['tem_quntity'] = $d['item_quantity']+1;

应该是:

$d['item_qty'] = $d['item_qty']+1;

最后,您需要通过在$d条件中为&符号(&)添加前缀来foreach作为参考。

foreach($_SESSION['cart'] as $key => &$d)
    {
         if($d) {
                   if($d['item_id'] == $_GET['item_id'])
                   {
                        $d['item_qty'] = $d['item_qty']+1;
                   }
           }
            else{

               }
   }

答案 1 :(得分:1)

使用reference& $ d

foreach($_SESSION['Cartquantity'] as $key => &$d)
    {
         if($d) {
                   if($d['item_id'] == $_GET['item_id'])
                   {
                        $d['tem_quntity'] = $d['item_quantity']+1;
                   }
           }
            else{

               }
   }

foreach($_SESSION['Cartquantity'] as $key => $d)
    {
         if($d) {
                   if($d['item_id'] == $_GET['item_id'])
                   {
                        $_SESSION['Cartquantity'][$key]['item_quntity'] = $d['item_quantity']+1;
                   }
           }
            else{

               }
   }

答案 2 :(得分:0)

尝试检查!empty($array)

if(!empty($d))

因为它是数组所以你需要检查它的内部是否有任何元素。

如果您想知道数组是否已定义,请使用isset($d)

如果您想知道是否定义了特定密钥,请使用isset($d['item_id'])

如果您想知道数组是否为空且具有键值对,请使用!empty($d)

答案 3 :(得分:0)

使用它:

foreach($_SESSION['cart'] as $key => $d)
    {
         if($d) {
                   if($d['item_id'] == $_GET['item_id'])
                   {
                        $d['tem_quntity'] = $d['item_qty']+1;
                   }
           }
            else{

               }
   }

答案 4 :(得分:0)

更改此

$d['tem_quntity'] = $d['item_quantity']+1;

$d['item_qty'] = $d['item_qty']+1;

答案 5 :(得分:0)

你可以通过

打电话
foreach ($_SESSION['Cartquantity'] as $value))
{
  if(isset($value))
  {
   if($value['item_id'] == $_GET['item_id'])
     {
      $value['item_quntity'] = $value['item_quantity']+1;
     }
  }
  else
  {

  }

}

答案 6 :(得分:0)

foreach($_SESSION['cart'] as $key=>$val)
{
    foreach($val as $subK)
    {
       if($_GET["item_id"]==$subk["item_id"])
       {
            $_SESSION['cart'][$key]["item_id"]=$_SESSION['cart'][$key]["item_quantity"]+1;
       }
    }
}