Есть ли лучший способ зациклить 6 слоев объектов JSON и несколько значений вложенных массивов с вложенными объектами внутри них? - PullRequest
0 голосов
/ 11 марта 2019

Я очень новичок в работе с API, использующими PHP. Простой возврат API Я в порядке с обработкой. У этого, однако, есть как слои, так и слои сложности, которые находятся за пределами моей сковороды. Мне удалось написать некоторый вероятный WAY-код избыточного кода, чтобы справиться с простой печатью на экране всех значений. Мне нравится делать это, когда я учусь, чтобы видеть результаты того, что, по моему мнению, происходит, чтобы проверить, и видеть ошибки по мере продвижения вперед.

На самом деле все, что мне действительно нужно, это 2 значения из этого беспорядка; LAT & LONG для адреса, который я проверяю.

Нет ли лучшего способа выбрать следующие значения?

  • LAT = $ data ['results'] ['location'] [latLng]. {Lat: 39.78373}
  • LONG = $ data ['results'] ['location'] [latLng]. {Lng: -100.445882}

Я бы предпочел не зацикливаться, как показано ниже, просто установить 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>";
        }
     }
?>
...