首页 > 解决方案 > 有没有更好的方法来循环 6 层 JSON 对象和多个嵌套数组值,其中包含嵌套对象?

问题描述

我在处理使用 PHP 的 API 方面非常陌生。简单的 API 返回我可以处理。然而,这个复杂的层次和层次超出了我的范围。我设法编写了一些可能的过度杀伤代码来处理仅将所有值打印到屏幕上。我喜欢在学习时这样做,这样我就可以看到我认为正在发生的事情的结果,以验证并在我前进时看到错误。

实际上,我真正需要的只是这个混乱中的 2 个值;我正在检查的地址的 LAT & LONG。

有没有更好的方法来选择以下值?:

我宁愿不要像下面这样循环,只是在中间设置2个变量


<?PHP
$data = json_decode('{"info":{"statuscode":0,"copyright":{"text":"\u00A9 2019 MapQuest, Inc.","imageUrl":"http://api.mqcdn.com/res/mqlogo.gif","imageAltText":"\u00A9 2019 MapQuest, Inc."},"messages":[]},"options":{"maxResults":-1,"thumbMaps":true,"ignoreLatLngInput":false},"results":[{"providedLocation":{"location":"2032 Hopkins Mill Rd,Roswell 30077,GA"},"locations":[{"street":"","adminArea6":"","adminArea6Type":"Neighborhood","adminArea5":"","adminArea5Type":"City","adminArea4":"","adminArea4Type":"County","adminArea3":"","adminArea3Type":"State","adminArea1":"US","adminArea1Type":"Country","postalCode":"","geocodeQualityCode":"A1XXX","geocodeQuality":"COUNTRY","dragPoint":false,"sideOfStreet":"N","linkId":"0","unknownInput":"","type":"s","latLng":{"lat":39.78373,"lng":-100.445882},"displayLatLng":{"lat":39.78373,"lng":-100.445882},"mapUrl":"http://open.mapquestapi.com/staticmap/v5/map?key=123456&type=map&size=225,160&locations=39.7837304,-100.4458825|marker-sm-50318A-1&scalebar=true&zoom=2&rand=-1073424276"}]}]}',true);

    foreach($data as $key => $child) {
        if(is_array($child)){
            foreach($child as $keya => $a){
                if(is_array($a)){
                    foreach ($a as $keyb =>$b) {
                        if(is_array($b)){
                            foreach($b as $keyc => $c){
                                if(is_array($c)){
                                    foreach($c as $keyd =>$d){
                                        if(is_array($d)){
                                            foreach($d as $keye =>$e){
                                                echo "<b>". $keye . "</b> : " . $e . '</br>';
                                            }
                                        } else {
                                            echo "<b>". $keyd . "</b> : " . $d . '</br>';
                                        }
                                    }
                                } else {
                                    echo "<b>". $keyc . "</b> : " . $c . '</br>';
                                }
                            }
                        } else {
                            echo "<b>". $keyb . "</b> : " . $b . "</br>";
                        }
                    }
                } else {
                    echo "<b>". $keya . "</b> : " . $a . "</br>";
                }
            }
        } else {
            echo "<b>". $key . "</b> : " . $child . "</br>";
        }
     }
?>

标签: phparraysjsonobjectnested

解决方案


推荐阅读