-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

の2番目のパラメーターを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 />";
    }
}

トリックを行う必要があります。

于 2013-01-18T23:29:31.460 に答える
-1

json_decodeには、連想配列()を返すオプションがあります$assoc = true。この後、にアクセスするのは簡単です$associative_array["2"]

于 2013-01-18T23:30:32.207 に答える