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 相关文章推荐
PHP 开发工具
Dec 06 PHP
用php过滤危险html代码的函数
Jul 22 PHP
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
Oct 12 PHP
php生成二维码的几种方式整理及使用实例
Jun 03 PHP
php实现斐波那契数列的简单写法
Jul 19 PHP
php中print(),print_r(),echo()的区别详解
Dec 01 PHP
php从数据库查询结果生成树形列表的方法
Apr 17 PHP
PHP使用Mysqli类库实现完美分页效果的方法
Apr 07 PHP
使用ltrace工具跟踪PHP库函数调用的方法
Apr 25 PHP
thinkphp3.2实现上传图片的控制器方法
Apr 28 PHP
PHP 布尔值的自增与自减的实现方法
May 03 PHP
在 PHP 和 Laravel 中使用 Traits的方法
Nov 13 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
两级联动select刷新后其值保持不变的实现方法
2014/01/27 PHP
ThinkPHP模板循环输出Volist标签用法实例详解
2016/03/23 PHP
JSON两种结构之对象和数组的理解
2016/07/19 PHP
Zend Framework路由器用法实例详解
2016/12/11 PHP
PHP终止脚本运行三种实现方法详解
2020/09/01 PHP
jquery下jstree简单应用 - v1.0
2011/04/14 Javascript
JQuery中关于jquery.js与jquery.min.js的比较探讨
2013/05/15 Javascript
js中prototype用法详细介绍
2013/11/14 Javascript
纯JavaScript实现获取onclick、onchange等事件的值
2014/12/29 Javascript
javascript操作select元素实例分析
2015/03/27 Javascript
jQuery+ajax实现实用的点赞插件代码
2016/07/06 Javascript
移动端日期插件Mobiscroll.js使用详解
2016/12/19 Javascript
JavaScript中清空数组的三种方式
2017/03/22 Javascript
详解vue.js2.0父组件点击触发子组件方法
2017/05/10 Javascript
Bootstrap Multiselect 常用组件实现代码
2017/07/09 Javascript
Vue多种方法实现表头和首列固定的示例代码
2018/02/02 Javascript
JS实现根据指定值删除数组中的元素操作示例
2018/08/02 Javascript
小程序实现长按保存图片的方法
2019/12/31 Javascript
浅谈Vuex的this.$store.commit和在Vue项目中引用公共方法
2020/07/24 Javascript
手把手教你实现 Promise的使用方法
2020/09/02 Javascript
vue+flask实现视频合成功能(拖拽上传)
2021/03/04 Vue.js
python爬虫实战之爬取京东商城实例教程
2017/04/24 Python
Python实现购物程序思路及代码
2017/07/24 Python
python Crypto模块的安装与使用方法
2017/12/21 Python
pip命令无法使用的解决方法
2018/06/12 Python
selenium+python自动化测试之页面元素定位
2019/01/23 Python
在交互式环境中执行Python程序过程详解
2019/07/12 Python
详解Python Qt的窗体开发的基本操作
2019/07/14 Python
Python新手学习装饰器
2020/06/04 Python
Python实现查找数据库最接近的数据
2020/06/08 Python
英国玛莎百货澳大利亚:Marks & Spencer Australia
2019/08/30 全球购物
中科软测试工程师面试题
2012/06/16 面试题
企业安全生产责任书
2014/04/14 职场文书
营销部内勤岗位职责
2014/04/30 职场文书
社区爱国卫生月活动总结
2014/06/30 职场文书
完美处理python与anaconda环境变量的冲突问题
2021/04/07 Python