在PHP中访问JSON上的嵌套数组?

在PHP中访问JSON上的嵌套数组?,php,json,nested,Php,Json,Nested,这是代码,它使用foreach来访问部门和工人 编辑:将更正几个粘贴错误 <?php $json = '{ "boss": "Jeff", "department": [{ "office": "1111", "workers": "[{\"id_work\":\"123\",\"name\":\"mike\",\"mobile\":\"12345\"}]" }]}'; $json_data = json_decode($json); echo "Boss:".$json

这是代码,它使用foreach来访问部门和工人

编辑:将更正几个粘贴错误

<?php

$json = '{
"boss": "Jeff",
"department": [{
    "office": "1111",
    "workers": "[{\"id_work\":\"123\",\"name\":\"mike\",\"mobile\":\"12345\"}]"
}]}';
$json_data = json_decode($json);
echo "Boss:".$json_data->boss;

echo "<br>";

foreach($json_data->deparment as $dep)
{

 echo "Office number:".$dep->office."<br>";

  foreach($dep->workers as $worker){
  echo "Worker ID: ".$worker->id_work."<br>";
  echo "Worker name : ".$worker->name."<br>";
  echo "Worker mobil: ".$worker->mobil."<br>";


}


}
?>

尝试执行foreach()时无法访问内部数组发生以下情况:

为foreach()提供的参数无效


如何访问嵌套数组的信息,
$json
中的json数据是错误的。解码没有给出错误,但返回的数组不是您想要的,这就是为什么在
json\u decode
之后会出现错误

您得到的错误是因为辅助值是字符串格式。 您应该更新:

发件人:
“workers”:“[{\'id\u work\':\'123\',\'name\':\'mike\',\'mobile\':\'12345\'””

致:
“工人”:[{“id\U工作”:“123”,“姓名”:“迈克”,“手机”:“12345”}]


最终结果:

$json = '{
"boss": "Jeff",
"department": [{
    "office": "1111",
    "workers": [{ "id_work": "123", "name": "mike", "mobile":"12345"}]
}]}';

$json_data = json_decode($json);
echo "Boss:".$json_data->boss;
echo "<br>";

foreach($json_data->department as $dep)
{
    echo "Office number:".$dep->office."<br>";

    foreach($dep->workers as $worker){
        echo "Worker ID: ".$worker->id_work."<br>";
        echo "Worker name : ".$worker->name."<br>";
        echo "Worker mobil: ".$worker->mobile."<br>";
    }
}
$json=”{
“老板”:“杰夫”,
“部门”:[{
“办公室”:“1111”,
“工人”:[{“id_工作”:“123”,“姓名”:“迈克”,“手机”:“12345”}]
}]}';
$json_data=json_decode($json);
echo“Boss:”.$json_data->Boss;
回声“
”; foreach($json_data->department as$dep) { 回显“办公室编号:”..dep->Office.“
”; foreach($dep->workers as$worker){ 回显“工人ID:”.$Worker->ID_work.“
”; 回显“工作人员名称:”.$Worker->name.“
”; echo“工人手机:“.$Worker->mobile。”
”; } }
$json
中的json数据是错误的。解码没有给出错误,但返回的数组不是您想要的,这就是为什么在
json\u decode
之后会出现错误

您得到的错误是因为辅助值是字符串格式。 您应该更新:

发件人:
“workers”:“[{\'id\u work\':\'123\',\'name\':\'mike\',\'mobile\':\'12345\'””

致:
“工人”:[{“id\U工作”:“123”,“姓名”:“迈克”,“手机”:“12345”}]


最终结果:

$json = '{
"boss": "Jeff",
"department": [{
    "office": "1111",
    "workers": [{ "id_work": "123", "name": "mike", "mobile":"12345"}]
}]}';

$json_data = json_decode($json);
echo "Boss:".$json_data->boss;
echo "<br>";

foreach($json_data->department as $dep)
{
    echo "Office number:".$dep->office."<br>";

    foreach($dep->workers as $worker){
        echo "Worker ID: ".$worker->id_work."<br>";
        echo "Worker name : ".$worker->name."<br>";
        echo "Worker mobil: ".$worker->mobile."<br>";
    }
}
$json=”{
“老板”:“杰夫”,
“部门”:[{
“办公室”:“1111”,
“工人”:[{“id_工作”:“123”,“姓名”:“迈克”,“手机”:“12345”}]
}]}';
$json_data=json_decode($json);
echo“Boss:”.$json_data->Boss;
回声“
”; foreach($json_data->department as$dep) { 回显“办公室编号:”..dep->Office.“
”; foreach($dep->workers as$worker){ 回显“工人ID:”.$Worker->ID_work.“
”; 回显“工作人员名称:”.$Worker->name.“
”; echo“工人手机:“.$Worker->mobile。”
”; } }
你的JSON字符串看起来是错误的,我认为你需要在->
]}
的末尾添加一个
]
@Dalton只是,没有。你可以传递一个特定的参数到
JSON\u decode()
来强制数组结果,它看起来不像OP需要它。在这里粘贴JSON代码没有错误,但是JSON代码是正确的。但是这个foreach($dep->workers as$worker)的唯一错误是
workers
属性是字符串,而不是数组。看起来你对它进行了双重编码。尝试
foreach(json\u将($dep->workers)解码为$worker)
或者修复数据format@Landa您可以使用
true
作为
json\u decode()
中的第二个参数,将json转换为普通php数组。易于处理(对我来说两者都很容易处理)您的JSON字符串看起来是错误的,我认为您需要在末尾添加一个
]
,->
@Dalton只是,不。您可以将一个特定参数传递给
JSON\u decode()
若要强制生成数组结果,并且看起来不像OP需要itI,则在此处粘贴json代码时不会出现错误,但json代码是正确的。但是这个foreach($dep->workers as$worker)的唯一错误是
workers
属性是字符串,而不是数组。看起来你对它进行了双重编码。尝试
foreach(json\u将($dep->workers)解码为$worker)
或者修复数据format@Landa您可以使用
true
作为
json\u decode()
中的第二个参数,将json转换为普通php数组。易于处理(对我来说两者都很容易处理)Thx抱歉使用json:/Thx抱歉使用json:/