2013-03-07 28 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; 
     } 
    } 
}