php - 有没有更好的方法来循环 6 层 JSON 对象和多个嵌套数组值,其中包含嵌套对象?
问题描述
我在处理使用 PHP 的 API 方面非常陌生。简单的 API 返回我可以处理。然而,这个复杂的层次和层次超出了我的范围。我设法编写了一些可能的过度杀伤代码来处理仅将所有值打印到屏幕上。我喜欢在学习时这样做,这样我就可以看到我认为正在发生的事情的结果,以验证并在我前进时看到错误。
实际上,我真正需要的只是这个混乱中的 2 个值;我正在检查的地址的 LAT & LONG。
有没有更好的方法来选择以下值?:
- LAT = $data['results']['locations'][latLng].{lat:39.78373}
- LONG = $data['results']['locations'][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>";
}
}
?>
解决方案
推荐阅读
- javascript - 如何正确地通过 3 个类组件传递数据?
- ios - UITableview滚动崩溃中的Swift UISearchController活动时间
- angular - 由于特定宽度而更改 Mat-Grid 的布局顺序
- java - 使用注解时如何在mybatis中使用hashmap将值插入一行?
- java - 使用 Java 中的旧文件详细信息创建文件
- mongodb - 在 ubuntu ec2 上安装 mongodb 的问题
- java - 安装错误:对不起。我们确实尝试过。出问题了。请重试或联系您的管理员
- c# - 即使没有查询错误,也没有在 Access 数据库表中插入任何内容(c#)
- php - 多级嵌套数组配对
- python-3.x - python使用函数而不等待它的返回(即开即弃)?