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 之 没有mysql支持时的替代方案
Oct 09 PHP
php XPath对XML文件查找及修改实现代码
Jul 27 PHP
php _autoload自动加载类与机制分析
Feb 10 PHP
PHP关于IE下的iframe跨域导致session丢失问题解决方法
Oct 10 PHP
php获取远程图片体积大小的实例
Nov 12 PHP
php数组添加元素方法小结
Dec 20 PHP
PHP5.2中PDO的简单使用方法
Mar 25 PHP
php 使用fopen函数创建、打开文件详解及实例代码
Sep 24 PHP
PHP编程实现阳历转换为阴历的方法实例
Aug 08 PHP
如何利用预加载优化Laravel Model查询详解
Aug 11 PHP
php使用curl_init()和curl_multi_init()多线程的速度比较详解
Aug 15 PHP
laravel 框架结合关联查询 when()用法分析
Nov 22 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中文字符截取防乱码
2008/03/28 PHP
PHP学习 运算符与运算符优先级
2008/06/15 PHP
php截取utf-8中文字符串乱码的解决方法
2010/03/29 PHP
php header示例代码(推荐)
2010/09/08 PHP
基于jQueryUI和Corethink实现百度的搜索提示功能
2016/11/09 PHP
php基于ob_start(ob_gzhandler)实现网页压缩功能的方法
2017/02/18 PHP
Laravel学习教程之model validation的使用示例
2017/10/23 PHP
Mac系统下安装PHP Xdebug
2018/03/30 PHP
ajax 同步请求和异步请求的差异分析
2011/07/04 Javascript
2012年开发人员的16款新鲜的jquery插件体验分享
2012/12/28 Javascript
使用Math.floor与Math.random取随机整数的方法详解
2013/05/07 Javascript
jquery实现点击消失的代码
2014/03/03 Javascript
Ext GridPanel加载完数据后进行操作示例代码
2014/06/17 Javascript
我的Node.js学习之路(二)NPM模块管理
2014/07/06 Javascript
JavaScript实现的石头剪刀布游戏源码分享
2014/08/22 Javascript
js仿淘宝和百度文库的评分功能
2016/05/15 Javascript
JavaScript数据结构之二叉树的遍历算法示例
2017/04/13 Javascript
vue.js整合mint-ui里的轮播图实例代码
2017/12/27 Javascript
Vue.js实现tab切换效果
2019/07/24 Javascript
react MPA 多页配置详解
2019/10/18 Javascript
node.js中fs文件系统模块的使用方法实例详解
2020/02/13 Javascript
pandas series序列转化为星期几的实例
2018/04/11 Python
通过python顺序修改文件名字的方法
2018/07/11 Python
详解python3中的真值测试
2018/08/13 Python
PyCharm配置mongo插件的方法
2018/11/30 Python
Numpy之random函数使用学习
2019/01/29 Python
解决Pandas的DataFrame输出截断和省略的问题
2019/02/08 Python
pytorch中的transforms模块实例详解
2019/12/31 Python
基于python实现FTP文件上传与下载操作(ftp&amp;sftp协议)
2020/04/01 Python
重写django的model下的objects模型管理器方式
2020/05/15 Python
python pymysql库的常用操作
2020/10/16 Python
解决方案设计综合面试题
2015/08/31 面试题
2015年元旦活动总结
2014/05/09 职场文书
会计专业自荐书
2014/07/08 职场文书
golang gopm get -g -v 无法获取第三方库的解决方案
2021/05/05 Golang
nginx.conf配置文件结构小结
2022/04/08 Servers