新答案
重新回答您修改后的问题:实际上适用于属性以及多值项目(数组),详细信息请点击此处。例如,在您的问题中使用JSON字符串:foreach
$data = json_decode($json);
foreach ($data as $name => $value) {
// This will loop three times:
// $name = inbox
// $name = sent
// $name = draft
// ...with $value as the value of that property
}
在对属性的主循环中,可以使用内部循环来遍历每个属性指向的数组条目。例如,如果您知道每个顶级属性都有一个数组值,并且每个数组条目都有一个“firstName”属性,则代码如下:
$data = json_decode($json);
foreach ($data as $name => $value) {
echo $name . ':'
foreach ($value as $entry) {
echo ' ' . $entry->firstName;
}
}
...将显示:
inbox:
Brett
Jason
Elliotte
sent:
Issac
Tad
Frank
draft:
Eric
Sergei
旧答案
开始编辑重新发表您的评论:
现在我想知道如何使用几个对象解码JSON字符串!
您发布的示例确实有几个对象,它们都包含在一个包装器对象中。这是 JSON 的要求;你不能(例如)这样做:
{"name": "I'm the first object"},
{"name": "I'm the second object"}
该 JSON 无效。必须有一个顶级对象。它可能只包含一个数组:
{"objects": [
{"name": "I'm the first object"},
{"name": "I'm the second object"}
]}
...或者,当然,您可以为各个对象命名:
{
"obj0": {"name": "I'm the first object"},
"obj1": {"name": "I'm the second object"}
}
结束编辑
您的示例是一个包含三个属性的对象,每个属性的值都是一个对象数组。实际上,它与您链接的问题中的示例没有太大区别(该示例还具有具有数组值的属性的对象)。
所以:
$data = json_decode($json);
foreach ($data->programmers as $programmer) {
// ...use $programmer for something...
}
foreach ($data->authors as $author) {
// ...use $author for something...
}
foreach ($data->musicians as $musician) {
// ...use $musician for something...
}