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 个,这可能吗?
解决方案
您可以检查密钥,如果存在则使用它,如果没有,则获取第一个密钥:
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
}
}