PHP echo json具有键值

时间:2017-01-11 21:29:29

标签: php arrays json echo

为什么这段代码无法正常工作或我做错了什么?

$json = json_encode($myInstance->getData($id));
    $result = json_decode($json,true);
    $i = 0;
    foreach ($result as $value) {
        echo '<div>'.$value[$i]['name'].'</div>';
        $i++;
    }

第一个值显示正确,但不会迭代! 是$value[$i]['name']不是为迭代而构建的吗? 它仅打印array[0]而非array[1]。感谢。

1 个答案:

答案 0 :(得分:1)

您最好使用嵌套的foreach循环,通常不是很好的编码练习,但它会完成您尝试做的工作。

$json = json_encode($myInstance->getData($id));
$result = json_decode($json,true);

foreach ($result as $value) {
    foreach($value as $value_detail) {
        echo '<div>'.$value_detail['name'].'</div>';
    }
}

您的代码将遍历JSON中的所有第一级项目,并显示第一个项目的第一个名称,第二个项目的第二个名称,第三个项目的第三个名称等。

您遇到的问题可能是因为$json数组是3D,例如

[0 => 
  [ 
    ['name' => 'Foo'], ['name' => 'Bar'] 
  ] 
]

如果是这种情况,那么您可能会发现foreach循环可以

foreach($result[0] as $value) {
    echo '<div>'.$value['name'].'</div>';
}

尝试var_dump($result);查看数据的样子。