首页 > 解决方案 > 获取具有不同结构开头的两种类型的 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 个,这可能吗?

标签: phpjson

解决方案


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

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

推荐阅读