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);
以上所述就是本文的全部内容了,希望大家能够喜欢。