0

TV Shows API からデータを解析しようとしていますが、インデックス番号を取得する方法がわかりません。

例:

{
"data": {
    "0": {
        "1": {
            "param1": "value1", 
            "param2": "warning", 
        }
    }, 
    "1": {
        "1": {
            "param1": "value1", 
            "param2": "value2", 
        }, 
        "2": {
            "param1": "value1", 
            "param2": "warning", 
        }, 
        "3": {
            "param1": "value1", 
            "param2": "warning", 
        }, 
    }
}
}

「params」と「values」は問題なく取得できますが、インデックス番号を「エコー」できません。

これは私がそれをやろうとしている方法です:

$string = file_get_contents(api);
$json_a = json_decode($string, true);
foreach ($json_a['data'] as $seasons) {
    foreach ($seasons as $episodes) {
            if ($episodes['param2']=="warning") {
            // echo index number of season
            // echo index number of episode

            }
    }
}

foreach を使用してインデックス番号を取得できないことを読んだと思いますか? もしそうなら、解決策は何ですか?

シーズン番号とエピソードの変数を「手動で」増やしてみましたが、インデックス番号は異なる場合があります。それらは連続していない可能性があり、「0」ではなくインデックス「1」で始まるものもあります。

4

4 に答える 4

1

foreach (array_expression as $key => $value)の代わりに使用しforeach (array_expression as $value)ます。それ$keyはあなたが見逃しているものです。

PHP: foreach

于 2012-08-13T21:55:35.793 に答える
1

カウンターは必要ありません。 foreach の定義にキーを追加するだけです

例えば。

$test = array('foo' => 'bar');

foreach($test as $key => $value) {
    echo $key . "\n";
    echo $value;
}

出力

foo
bar

http://php.net/manual/en/control-structures.foreach.php

于 2012-08-13T21:55:44.343 に答える
0

私はあなたのjsonをエンコードできませんでしたが、

次のような配列を使用しました:

array
  0 => 
    array
      1 => 
        array
          'param1' => string 'value1' (length=6)
          'param2' => string 'warning' (length=7)
  1 => 
    array
      1 => 
        array
          'param1' => string 'value1' (length=6)
          'param2' => string 'warning' (length=7)
      2 => 
        array
          'param1' => string 'value1' (length=6)
          'param2' => string 'value2' (length=6)

コードは次のとおりです。

$a[0][1] = array("param1"=>"value1","param2"=>"warning");
$a[1][1] = array("param1"=>"value1","param2"=>"warning");
$a[1][2] = array("param1"=>"value1","param2"=>"value2");

foreach($a as $key=>$val)
{
    foreach($val as $skey => $sval)
    {
        if($sval['param2']=="warning")
            echo $key."-".$skey."<br>";
    }
}
于 2012-08-13T22:43:03.200 に答える
0

これを試して:

foreach ($json_a['data'] as $index1 => $seasons) {}

同様に:

foreach ($seasons as $index2 => $episodes) {}
于 2012-08-13T21:56:28.927 に答える