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", 
        }, 
    }
}
}

我可以得到“参数”和“值”,但我不能“回显”索引号。

这就是我尝试这样做的方式:

$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 我无法获得索引号?如果是这样,解决方案是什么?

我尝试“手动”增加季号和剧集的变量,但索引号可能会有所不同。它们可能不是连续的,有些以索引“1”而不是“0”开头。

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 回答