JSON 孩子在 PHP 中只得到第一个孩子

问题描述

一整天都在尝试做一些看起来很简单的事情,但我无法从 json 中获取所有子节点(仅获取代码中的第一个子节点):

foreach($obj->data[0]->region as $code_id) {              
    echo $code_id->code_id . "\n"; 
        
}

下面的 JSON 片段:

{
"data": [
        {
        "record_id": 9,"region": [
            {
                "code_id": 2,"code_name": "CA"
            },{
                "code_id": 3,"code_name": "WY"
            }
           
        ]
        },{
        "record_id": 10,"region": [
            {
                "code_id": 4,{
                "code_id": 5,"code_name": "WY"
            }
           
        ]
        }
    ]
}

教程的任何链接或建议都非常感谢:(

解决方法

如果你想遍历两个数组,下面的方法会起作用:

// Loop over everything inside of data
foreach($obj->data as $thing ) {
    // Loop over each region
    foreach($thing->region as $region) {
        echo $region->code_id . "\n";
    }
}

输出为:

2
3
4
5

此处演示:https://3v4l.org/NQTV6

,

试试这个...

不是最优化的解决方案,但应该能让您重回正轨。

foreach($obj->data[0] as $record) { 
    if(isset($record->region)){
        foreach($record->region as $code){
            echo $code->code_id . "\n";
        }
    }
}