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新手上路(九)
Oct 09 PHP
php mysql索引问题
Jun 07 PHP
php设计模式 Adapter(适配器模式)
Jun 26 PHP
PHP使用CURL获取302跳转后的地址实例
May 04 PHP
PHP使用header()输出图片缓存实例
Dec 09 PHP
php+Mysqli利用事务处理转账问题实例
Feb 11 PHP
php使用类继承解决代码重复的问题
Feb 11 PHP
php语言的7种基本的排序方法
Dec 28 PHP
Smarty高级应用之缓存操作技巧分析
May 14 PHP
php中文字符串截取多种方法汇总
Oct 06 PHP
PHP简单实现遍历目录下特定文件的方法小结
May 22 PHP
php中file_get_contents()函数用法实例
Feb 21 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
WinXP + Apache +PHP5 + MySQL + phpMyAdmin安装全功略
2006/07/09 PHP
PHP新手NOTICE错误常见解决方法
2011/12/07 PHP
PHP 错误处理机制
2015/07/06 PHP
浅谈PHP中的Trait使用方法
2019/03/22 PHP
JS 继承实例分析
2008/11/04 Javascript
jquery 插件实现图片延迟加载效果代码
2010/02/06 Javascript
javascript继承之为什么要继承
2012/11/10 Javascript
收集json解析的四种方法分享
2014/01/17 Javascript
JavaScript中的数组操作介绍
2014/12/30 Javascript
js获取当前页的URL与window.location.href简单方法
2017/02/13 Javascript
jQuery快速高效制作网页交互特效
2017/02/24 Javascript
JS路由跳转的简单实现代码
2017/09/21 Javascript
基于angular-utils-ui-breadcrumbs使用心得(分享)
2017/11/03 Javascript
React Native 使用Fetch发送网络请求的示例代码
2017/12/02 Javascript
webpack中使用iconfont字体图标的方法
2018/02/22 Javascript
微信小程序如何像vue一样在动态绑定类名
2018/04/17 Javascript
解决Angular2 router.navigate刷新页面的问题
2018/08/31 Javascript
Vue实现菜单切换功能
2020/11/08 Javascript
python在linux中输出带颜色的文字的方法
2014/06/19 Python
简单介绍Python中利用生成器实现的并发编程
2015/05/04 Python
Python实现配置文件备份的方法
2015/07/30 Python
python数据抓取分析的示例代码(python + mongodb)
2017/12/25 Python
Python实现的视频播放器功能完整示例
2018/02/01 Python
Python3实现的判断环形链表算法示例
2019/03/07 Python
python线程安全及多进程多线程实现方法详解
2019/09/27 Python
python实现的Iou与Giou代码
2020/01/18 Python
详解python第三方库的安装、PyInstaller库、random库
2021/03/03 Python
HTML5标签小集
2011/08/02 HTML / CSS
澳大利亚在线购买葡萄酒:The Wine Collective
2020/02/20 全球购物
神路信息Java面试题目
2013/03/31 面试题
某公司Java工程师面试题笔试题
2016/03/27 面试题
读书之星事迹材料
2014/05/12 职场文书
低碳生活的宣传标语
2014/06/23 职场文书
小学四年级作文之人物作文
2019/11/06 职场文书
python基于tkinter实现gif录屏功能
2021/05/19 Python
Python中的socket网络模块介绍
2022/07/23 Python