2013-03-07 112 views
-1

我有一个SESSION阵列$ _SESSION [ '购物车']在多维关联数组中获取值?

例如,它的价值在于它

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

现在,让我们说,我有ITEM_ID = 1420

现在我想增加item_qtyitem_id = 1420而且我也必须在该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{ 

       } 
    } 

它不工作?

+0

打电话请确保您有名字'Cartquantity'或'cart'会议? – Rikesh 2013-03-07 10:51:55

回答

3

你遍历$_SESSION['Cartquantity']但已经告诉我们,数组存储在$_SESSION['cart']

而且,这样的:

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

应该是:

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

最后,你需要通过在foreach条件前面加上符号(&),以它做$d参考。

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

       } 
    } 
+0

老兄,但它不会添加到会话数组中 – Shreya 2013-03-07 11:11:59

+0

您是否在'foreach'条件中将'&d放在'$ d'之前? – MichaelRushton 2013-03-07 11:13:50

+0

好吧你是对的 – Shreya 2013-03-07 11:23:16

0

尝试检查!empty($array)

if(!empty($d)) 

,因为它数组,所以你需要检查如果没有它里面的任何元素。

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

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

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

0

使用它:

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

       } 
    } 
+0

我认为它会工作。 – Kabir 2013-03-07 11:00:55

1

使用参考& $ 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{ 

       } 
    } 
+0

第二个例子不需要那个参考。 – MichaelRushton 2013-03-07 10:57:29

+0

是的,我只是从第一个粘贴,谢谢:) – 2013-03-07 10:58:09

0

改变这种

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

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

您可以通过

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

    } 

} 
+0

你将如何得到'$ d ['item_id']' – Kabir 2013-03-07 10:58:48

+0

这是一个复制粘贴错误..已纠正它... – 2013-03-07 11:03:42

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; 
     } 
    } 
}