我有这个嵌套数组,我需要来自该数组的一些元素,但由于某些原因我的代码不起作用。
当我使用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."
}
是的,我知道这是一个愚蠢的问题,但我的脑袋正在爆炸,所以请帮助我们。
编辑:
所以我试图得到' name'从使用foreach循环的数组,但我的代码不起作用。对不起,我不知道如何更好地解释自己。
尝试
foreach( $array as $key => $value )
{
echo $array[$key][0]["name"];
}
但我仍然收到错误'非法字符串偏移'名称'
答案 0 :(得分:1)
您正在错误地索引数组。
这是名称的正确索引:echo $ array [" item"] [0] [" name"];
更接近的解决方案是:
foreach( $array as $key => $value ){
echo $array[$key][0]["name"];
}
但即使这样仍然是错误的。您需要为自己找出继续嵌套的逻辑。但问题的关键在于你误解了索引是什么。
"项目"是和索引。 0(整数0)是索引。 "名称"是一个索引。
echo $ key [0] [0]没有显示任何内容,因为它类似于输入:
" item" [0] [0]
根本没有引用数组。你需要$ array。
echo $ key [' item'] [' name'];不起作用是因为它没有引用$数组变量,并且没有引用实际承载信息的项目的索引0,其中" name"存在。
我需要有关您使用的数据的更多信息,以提供完整正确的答案。
我怀疑一个完整而完整的答案看起来与这两个循环中的一个类似:
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($ var as $ key = $ value)
应该是
foreach($ var as $ key => $ value)
根据手册:http://php.net/manual/en/control-structures.foreach.php
答案 1 :(得分:0)
我认为您的代码有问题。试试这个:
foreach($array as $key => $value) {
echo $value[$key][0]["name"];
}