我正在用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,这可能吗?
答案 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
}
}