-1

我有一个格式为 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 描述的项目的标题。

4

3 回答 3

2

改变

foreach($json->list as $item) {
    $i++;

foreach($json->list as $i => $item) {

(这在对象迭代的 PHP 文档中有所描述。)

于 2013-01-18T23:29:46.607 回答
1

json_decode()设置to的第二个参数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 />";
    }
}

应该做的伎俩。

于 2013-01-18T23:29:31.460 回答
-1

json_decode可以选择返回关联数组 ( $assoc = true)。在此之后,只需访问$associative_array["2"].

于 2013-01-18T23:30:32.207 回答