提取结构开头不同的两种类型的json文件

时间:2019-05-28 20:32:38

标签: php json

我正在用php处理json文件,文件的开头几乎没有区别,我的问题是我建立了两个foreach循环,我正在寻找一种使其成为一个循环的方法。

{"code":0,"rid":"0","data":{"subid":"9174906486819979969","data":{"more":


{"code":0,"rid":"0","data":{"9174906486819979969":{"more":

现在我正在那样做,它将处理代码加倍,其余的json文件都一样。

foreach($json['data']['data'])
{

}

foreach($json['data'])
{

}

我需要的是一个foreach循环而不是2,这可能吗?

1 个答案:

答案 0 :(得分:0)

您可以检查密钥,如果存在则使用它,如果没有,则获取第一个密钥:

if(isset($json['data']['data'])) {
    $data = $json['data']['data'];
} else {
    $data = reset($json['data']); //or current()
}

或更短:

$data = $json['data']['data'] ?? reset($json['data']);

然后:

foreach($data as $values) {
    //code
}

另一种选择是循环并检查数组,具体取决于您拥有的结构:

foreach($json['data'] as $values) {
    if(is_array($values)) {
        foreach($values as $v) {
            //code
        }
}