2017-06-16 184 views
1

我把數據在多個陣列中的PHP訪問多發陣列中的數據,並試圖通過鍵值對的邏輯來訪問它,但沒有得到成功麻煩在PHP

這裏的時候,我打印陣列print_r輸出:

Array ( 
    [0] => Array ( 
     [33] => Coca Cola Products 
    ) 
    [1] => Array ( 
     [1] => Agricultural products, Food and Beverages 
    ) 
) 

代碼I'musing:需要

foreach ($data as $key=>$option) 
{ 
    echo $key; 
} 

輸出:

33 coca cola products 
1 Agricultural products, Food and Beverages 

在我for -loop用於填充數據我這樣做:

$data[] = array($loop['category_id'] => $loop['category_name']); 

現在想獲得類別ID和類別名稱

好心幫我在這方面

+0

什麼是你想獲得? – Exprator

+0

@Exprator更新了問題kindly檢查 –

+0

我猜這個category_id是唯一的嗎?爲什麼不建立你這樣的數組呢:'$ data [$ loop ['category_id'])= $ loop ['category_name'];'然後在你的foreach中執行:echo $ key。 ''。 $ option;' –

回答

2

當你填充陣列...

data[] = array($loop['category_id'] => $loop['category_name']); 

Your creati將每個元素作爲一個數組,這就是爲什麼你最終得到最終結果。

如果您使用

$data[$loop['category_id']] = $loop['category_name']; 

你會看到陣列1級深度的創建。對此使用print_r,你會看到不同之處。這將意味着當您使用foreach進行迭代時,它將使用您用來添加數據的密鑰併爲之後的值賦值。

+0

如果你要複製/粘貼我的評論,請確保你修正了錯誤。 :-)它應該是'$ data [$ loop ['category_id']]'而不是'$ data [$ loop ['category_id'])'(最後一個括號)。 –

+0

我有意見的問題是,他們並不總是解釋的問題是什麼,以及有關副本遺憾 - 這是咖啡因還沒有在尚未踢和打字很辛苦: -/ –

+0

不是故意暗示你做錯了什麼。只是覺得這有點有趣。 :-) –

1

你的$ data是一個數組的數組,你應該這樣做,live demo

foreach ($data as $v) 
{ 
    echo key($v) . ' ' . current($v) . "\n"; 
} 
0

這是可以做到如下

$data = array(array('33'=>"Coca Cola Products"),array("1"=>"Agricultural products, Food and Beverages")); 

foreach ($data as $key=>$option) 
{ 
     foreach($option as $k=>$v){ 
       echo "\n". $k ." ". $v; 
     } 
}