在PHP中访问JSON上的嵌套数组?
这是代码,它使用foreach来访问部门和工人 编辑:将更正几个粘贴错误在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
<?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:/