2017-06-16 148 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; 
     } 
}