php获取json数据所有的节点路径
之前我们讲解过使用javascript获取json数据节点路径的问题,今天我们更进一步,讲解下php获取json数据所有的节点路径
<?php functioniterTree($data){ $retData=array(); $data=json_decode($data,true); if(!is_array($data)&&empty($data)){ echo'error!'."n"; }else{ $queue=array(); foreach($dataas$field=>$value){ $queue[]=$field; } $head=0; $tail=count($queue); while($head<$tail){ $field=$queue[$head++]; $path=explode("/",$field); $tmpData=&$data; foreach($pathas$key=>$ph){ $tmpData=&$tmpData[$ph]; } if(is_array($tmpData)&&!empty($tmpData)){ $newField=$field; foreach($tmpDataas$curField=>$curValue){ $newField=$field.'/'.$curField; $queue[$tail++]=$newField; } }else{ $retData[]=$field; } } } return$retData; } //测试数据 $data=file_get_contents("http://restapi.ele.me/v1/restaurants?extras%5B%5D=food_activity&extras%5B%5D=restaurant_activity&extras%5B%5D=certification&fields%5B%5D=id&fields%5B%5D=name&fiel ds%5B%5D=phone&fields%5B%5D=promotion_info&fields%5B%5D=name_for_url&fields%5B%5D=flavors&fields%5B%5D=is_time_ensure&fields%5B%5D=is_premium&fields%5B%5D=image_path&fields%5B%5D=rating&fie lds%5B%5D=is_free_delivery&fields%5B%5D=minimum_order_amount&fields%5B%5D=order_lead_time&fields%5B%5D=is_support_invoice&fields%5B%5D=is_new&fields%5B%5D=is_third_party_delivery&fields%5B% 5D=is_in_book_time&fields%5B%5D=rating_count&fields%5B%5D=address&fields%5B%5D=month_sales&fields%5B%5D=delivery_fee&fields%5B%5D=minimum_free_delivery_amount&fields%5B%5D=minimum_order_des cription&fields%5B%5D=minimum_invoice_amount&fields%5B%5D=opening_hours&fields%5B%5D=is_online_payment&fields%5B%5D=status&fields%5B%5D=supports&fields%5B%5D=in_delivery_area&geohash=wx4g07 j0w1v7&is_premium=0&limit=1000&offset=24&type=geohash"); $ret=iterTree($data); print_r($ret);
以上所述就是本文的全部内容了,希望大家能够喜欢。