我有一个格式为
的json文件{
"list" : {
"1" : {
"thing1" : "description",
"thing2" : "description",
"thing3" : "description"
},
"2" : {
"thing1" : "description",
"thing2" : "description",
"thing3" : "description"
},
etc.
}
我需要根据事物2的描述搜索并返回数据,但我还需要返回列表的编号。问题是json文件中的数字全部乱序,所以我不能只是递增一个变量,因为我全部通过它们。
目前我的代码设置如下:
$json = json_decode($response);
foreach($json->list as $item) {
$i++;
if($item->thing2 == "description") {
echo "<p>$item->thing1</p>";
echo "<p>$item->thing2</p>";
echo "<p>$item->thing3</p>";
echo "<p>position: $i</p><br /><br />";
}
}
不幸的是,每当$ i变量重新调整错误位置时,位置都会出现故障。如何返回具有正确thing2描述的项目的标题。
答案 0 :(得分:2)
更改
foreach($json->list as $item) {
$i++;
到
foreach($json->list as $i => $item) {
(这在object iteration的PHP文档中有描述。)
答案 1 :(得分:1)
将json_decode()
的第二个参数设置为TRUE
会返回一个关联数组,这更有利于您想要做的事情:
$json = json_decode($response, TRUE);
foreach($json['list'] as $key => $item) {
if($item['thing2'] == "description") {
echo "<p>$item['thing1']</p>";
echo "<p>$item['thing2']</p>";
echo "<p>$item['thing3']</p>";
echo "<p>position: $key</p><br /><br />";
}
}
应该做的伎俩。
答案 2 :(得分:-1)
json_decode可以选择返回关联数组($assoc = true
)。在此之后,只需访问$associative_array["2"]
即可。