php获取json数据所有的节点路径


Posted in PHP onMay 17, 2015

之前我们讲解过使用javascript获取json数据节点路径的问题,今天我们更进一步,讲解下php获取json数据所有的节点路径

<?php

function iterTree($data) {
 $retData = array();
 $data = json_decode($data, true);
 if (!is_array($data) && empty($data)) {
 echo 'error !' ."n"; 
 } else {
 $queue = array();
 foreach ($data as $field => $value) {
 $queue[] = $field; 
}
 $head = 0;
 $tail = count($queue);
 while ($head < $tail) {
 $field = $queue[$head++];
 $path = explode("/", $field);
 $tmpData = &$data; 
 foreach ($path as $key => $ph) {
 $tmpData = &$tmpData[$ph];
}
 if (is_array($tmpData) && !empty($tmpData)) {
 $newField = $field; 
 foreach ($tmpData as $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);

以上所述就是本文的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
php5.2.0内存管理改进
Jan 22 PHP
PHP 5.0对象模型深度探索之属性和方法
Mar 27 PHP
常用的php对象类型判断
Aug 27 PHP
PHP文件上传主要代码讲解
Sep 30 PHP
destoon实现不同会员组公司名称显示不同的颜色的方法
Aug 22 PHP
php实现图片等比例缩放代码
Jul 23 PHP
PHP定时执行任务的3种方法详解
Dec 21 PHP
PHP微信开发之模板消息回复
Jun 24 PHP
PHP中类的自动加载的方法
Mar 17 PHP
PHP实现在数据库百万条数据中随机获取20条记录的方法
Apr 19 PHP
php实现微信发红包功能
Jul 13 PHP
PHP如何使用array_unshift()在数组开头插入元素
Sep 01 PHP
php中memcache 基本操作实例
May 17 #PHP
PHP实现过滤各种HTML标签
May 17 #PHP
支持中文的PHP按字符串长度分割成数组代码
May 17 #PHP
php 批量查询搜狗sogou代码分享
May 17 #PHP
PHP解密Unicode及Escape加密字符串
May 17 #PHP
PHP实现远程下载文件到本地
May 17 #PHP
PHP生成json和xml类型接口数据格式
May 17 #PHP
You might like
PHP分页显示制作详细讲解
2006/12/05 PHP
php实例分享之html转为rtf格式
2014/06/02 PHP
教你php如何实现验证码
2016/01/20 PHP
thinkPHP中配置的读取与C方法详解
2016/12/05 PHP
jquery select(列表)的操作(取值/赋值)
2009/08/06 Javascript
Bootstrap与KnockoutJs相结合实现分页效果实例详解
2016/05/03 Javascript
angular+ionic 的app上拉加载更新数据实现方法
2017/01/16 Javascript
vue中for循环更改数据的实例代码(数据变化但页面数据未变)
2017/09/15 Javascript
js 毫秒转天时分秒的实例
2017/11/17 Javascript
微信小程序实现指定显示行数多余文字去掉用省略号代替
2018/07/25 Javascript
利用hasOwnProperty给数组去重的面试题分享
2018/11/05 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【凹多边形的分离轴检测算法】
2018/12/13 Javascript
详解在Node.js中发起HTTP请求的5种方法
2019/01/10 Javascript
浅谈JavaScript中this的指向更改
2020/07/28 Javascript
[01:30]2016国际邀请赛中国区预选赛神秘商店火爆开启
2016/06/26 DOTA
python复制文件代码实现
2013/12/23 Python
给Python IDLE加上自动补全和历史功能
2014/11/30 Python
Python的Django框架中消息通知的计数器实现教程
2016/06/13 Python
python非递归全排列实现方法
2017/04/10 Python
python制作图片缩略图
2019/04/30 Python
使用OpenCV实现仿射变换—缩放功能
2019/08/29 Python
Python跑循环时内存泄露的解决方法
2020/01/13 Python
Python操作Sqlite正确实现方法解析
2020/02/05 Python
html5使用canvas实现跟随光标跳动的火焰效果
2014/01/07 HTML / CSS
物业客服专员岗位职责
2013/11/30 职场文书
好邻里事迹材料
2014/01/16 职场文书
铁路安全事故反思
2014/04/26 职场文书
幼儿园教研活动总结
2014/04/30 职场文书
家长建议怎么写
2014/05/15 职场文书
校庆口号
2014/06/20 职场文书
学校法制宣传月活动总结
2014/07/03 职场文书
四年级学生期末评语
2014/12/26 职场文书
勇敢的心观后感
2015/06/09 职场文书
毕业典礼主持词
2015/06/29 职场文书
Python图片验证码降噪和8邻域降噪
2021/08/30 Python
redis数据结构之压缩列表
2022/03/21 Redis