2017-03-06 45 views
1

我有这个嵌套数组,但我需要该数组中的一些元素,但由于某种原因,我的代码不工作。为什么不是我的数组代码工作? php 5 array

当我使用var_dump我得到一个数组,看起来像这样

array(2) { 
    ["item"] => array(1) { 
     [0]=> array(3) { 
      ["name"]=> string(10) "..." 
      ["id"]=> string(16) "..." 
      ["rs"]=> string(9) "attending" 
      } 
     } 
    ["id"]=> string(15) "..." 
} 

例如我想获得ID和名称,我使用foreach

foreach($var as $key => $value){ 
    echo $key[0][0]; For name, but that displays nothing 
} 

我也用

foreach($var as $key => $value){ 
    echo $key['item']['name']; Whenever i run this code i get an error "Cannot use string offset etc." 
} 

是的,我知道,这是一个愚蠢的问题,但我的头爆炸,所以请帮助我的家伙。

编辑:

所以我想从使用foreach循环数组得到“名”,但我的代码是行不通的。我不知道如何更好地解释我自己,对不起。

试图

foreach($array as $key => $value)   
{ 
     echo $array[$key][0]["name"]; 
} 

但我仍然得到一个错误“非法串偏移‘名’

+1

你需要发布有问题的代码作为一个整体。另外,请添加更多关于您要做什么的解释。 – Carcigenicate

回答

1

更新评论

您不正确索引数组。

这是名称的正确索引:echo $ array [“item”] [0] [“name”];

仔细的解决方案是:

foreach($array as $key => $value){ 
    echo $array[$key][0]["name"]; 
} 

但即使这样,仍然是错误的。你需要弄清楚自己继续嵌套的逻辑。但问题的症结在于你误解了索引是什么。

“item”是和index。 0(整数0)是一个索引。 “name”是一个索引。

回声$键[0] [0]不显示任何内容,因为它就像打字:

“项”[0] [0]

而且不引用数组的。你需要$ array。

echo $ key ['item'] ['name'];不起作用,因为它没有引用$ array变量,并且不引用实际承载“名称”所在信息的项目的索引0。

我需要更多关于您用来给出完整正确答案的数据的信息。

我怀疑一个完整的和完整的答案将类似于这两个循环中的一个:

foreach($array as $key => $value){ 
    if ($key == "item") 
    { 
     echo $array[$key][0]["name"]; 
    } 
} 


foreach($array as $key => $value){ 
    if ($key == "item") 
    { 
     foreach($array[$key] as $key2 => $value2) 
     echo $array[$key][$key2]["name"]; 
    } 
} 

`

原文评论

我不能发表评论,是一个有错字?

的foreach($变种为$键= $值)

应该是

的foreach($变种为$密钥=> $值)

按手册:http://php.net/manual/en/control-structures.foreach.php

+0

它仍然显示错误“非法字符串偏移量名称” – drpzz

+0

尝试使用我为您写的最后一个foreach循环,理论上它应该工作,假设“名称”总是存在。 – FredMan

+0

是的,最后一个答案解决了我的问题,谢谢。我之前并不知道,我需要一个if语句来表示这个foreach。我认为只是在括号内使用索引就足够了,但我想我错了:D – drpzz

0

我认为你的代码有错误。试试这个:

foreach($array as $key => $value) { 
    echo $value[$key][0]["name"]; 
}