【发布时间】:2021-03-06 02:57:39
【问题描述】:
我一直在试图弄清楚如何从一个 json 数组中提取多个 JSON 对象。
我在其他帖子中使用了此代码
$json = '[
{"user_id":"1",
"user_name":"Sayeed Amin",
"time":"2019-11-06 13:21:26"}
]';
$someArray = json_decode($json, true);
foreach ($someArray as $key => $value) {
echo $value["user_id"] . ", " . $value["user_name"] . ", " . $value["time"] . "<br>";
}
我可以将它用于数组中的单个 json 对象,结果很好。
结果:1,Sayeed Amin,2019-11-06 13:21:26
如果我有多个 json 对象和数组呢?喜欢
$json = '[
{"name":"Name",
"value":"me you",
"id":0,
"type":"name",
"first":"me",
"middle":"",
"last":"you"
},
{"name":"Email",
"value":"myemail@gmail.com",
"id":1,
"type":"email"
},
{"name":"Phone",
"value":"+12015550000",
"id":2,"type":"phone"
},
{"name":"Address",
"value":"my address\nsomecity, somestate\nsomepost\nUS",
"id":3,
"type":"address",
"address1":"my address",
"address2":"",
"city":"somecity",
"state":"somestate",
"postal":"somepost",
"country":"US"
}
]';
$someArray = json_decode($json, true);
foreach ($someArray as $key => $value) {
echo $value["name"] . ", " . $value["value"] . "<br>";
}
结果:名字,我你
电子邮件,myemail@gmail.com
电话,+12015550000
地址,我的地址 somecity,somestate somepost US
期望的结果:姓名,我是你
【问题讨论】:
-
JSON 无效,
Syntax error, malformed JSON。您可以使用php.net/manual/en/function.json-last-error.php 进行调试。 -
Jason 是 Argonaut,JSON 是数据传输标准
-
您只需要在第一次迭代后退出。可以做类似3v4l.org/SZcSj 的事情。之所以可行,是因为第一个
id是0... 也可以在循环之前将变量设置为 0,并在满足条件后增加 1。 -
上面提供的代码有效,也许您在我编辑之前阅读过......或者您正在谈论我缺少的部分?
-
你如何确定你想要的结果是什么?它总是数组中的第一项,
"id": 0还是"name": "Name"?如果它总是第一个项目,只需使用$someArray[0]获取第一个对象。如果需要检查条件,请在循环中使用if语句。