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对象类型判断
Aug 27 PHP
PHP static局部静态变量和全局静态变量总结
Mar 02 PHP
PHP生成自适应大小的缩略图类及使用方法分享
May 06 PHP
PHP OPP机制和模式简介(抽象类、接口和契约式编程)
Jun 09 PHP
php中memcache 基本操作实例
May 17 PHP
php的api数据接口书写实例(推荐)
Sep 22 PHP
Yii2中datetime类的使用
Dec 17 PHP
php实现XML和数组的相互转化功能示例
Feb 08 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
Jul 20 PHP
php设计模式之建造器模式分析【星际争霸游戏案例】
Jan 23 PHP
ThinkPHP5与单元测试PHPUnit使用详解
Feb 23 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实现快速排序的三种方法分享
2014/03/12 PHP
php检测图片主要颜色的方法
2015/07/01 PHP
php生成gif动画的方法
2015/11/05 PHP
php版微信自动获取收货地址api用法示例
2016/09/22 PHP
基于Laravel实现的用户动态模块开发
2017/09/21 PHP
php实现将数组或对象写入到文件的方法小结【三种方法】
2020/04/22 PHP
鼠标滚轮改变图片大小的示例代码
2013/11/20 Javascript
Javascript实现字数统计
2015/07/03 Javascript
jQuery实现的网页竖向菜单效果代码
2015/08/26 Javascript
jquery自定义表格样式
2015/11/23 Javascript
js实现简单排列组合的方法
2016/01/27 Javascript
JS奇技之利用scroll来监听resize详解
2017/06/15 Javascript
在vue中实现某一些路由页面隐藏导航栏的功能操作
2020/09/21 Javascript
python 实现归并排序算法
2012/06/05 Python
Python常用小技巧总结
2015/06/01 Python
python生成器表达式和列表解析
2016/03/10 Python
浅谈numpy数组的几种排序方式
2017/12/15 Python
Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)
2018/04/30 Python
Python读取mat文件,并转为csv文件的实例
2018/07/04 Python
浅谈Python中的bs4基础
2018/10/21 Python
Pycharm 设置默认头的图文教程
2019/01/17 Python
Python实现统计英文文章词频的方法分析
2019/01/28 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
2019/07/26 Python
python matplotlib imshow热图坐标替换/映射实例
2020/03/14 Python
Python 多线程共享变量的实现示例
2020/04/17 Python
keras 使用Lambda 快速新建层 添加多个参数操作
2020/06/10 Python
python不同系统中打开方法
2020/06/23 Python
python 30行代码实现蚂蚁森林自动偷能量
2021/02/08 Python
CSS代码检查工具stylelint的使用方法详解
2021/03/27 HTML / CSS
升职自荐书范文
2013/11/28 职场文书
新闻发布会主持词
2014/03/28 职场文书
关于青春的演讲稿三分钟
2014/08/22 职场文书
爱心捐款倡议书:点燃希望,传递温暖
2019/11/04 职场文书
Goland使用Go Modules创建/管理项目的操作
2021/05/06 Golang
mysql获取指定时间段中所有日期或月份的语句(不设存储过程,不加表)
2021/06/18 MySQL
Redis 操作多个数据库的配置的方法实现
2022/03/23 Redis