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的String类代码
Apr 20 PHP
基于session_unset与session_destroy的区别详解
Jun 03 PHP
8个必备的PHP功能实例代码
Oct 27 PHP
php获取从html表单传递数组的方法
Mar 20 PHP
解决nginx不支持thinkphp中pathinfo的问题
Jul 21 PHP
PHP使用strstr()函数获取指定字符串后所有字符的方法
Jan 07 PHP
php pthreads多线程的安装与使用
Jan 19 PHP
mysql查找删除重复数据并只保留一条实例详解
Sep 24 PHP
[原创]php实现 data url的图片生成与保存
Dec 04 PHP
PHP编程获取各个时间段具体时间的方法
May 26 PHP
laravel 查询数据库获取结果实现判断是否为空
Oct 24 PHP
php 的多进程操作实践案例分析
Feb 28 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采集腾讯微博的实现代码
2012/01/19 PHP
php页码形式分页函数支持静态化地址及ajax分页
2014/03/28 PHP
php示例详解Constructor Prototype Pattern 原型模式
2015/10/15 PHP
PHP预定义变量9大超全局数组用法详解
2016/04/23 PHP
js复制到剪切板的实例方法
2013/06/28 Javascript
js触发onchange事件的方法说明
2014/03/08 Javascript
jquery实现图片随机排列的方法
2015/05/04 Javascript
jQuery滚动加载图片实现原理
2015/12/14 Javascript
jquery对Json的各种遍历方法总结(必看篇)
2016/09/29 Javascript
jQuery progressbar通过Ajax请求实现后台进度实时功能
2016/10/11 Javascript
浅谈JavaScript中promise的使用
2017/01/11 Javascript
vue2.x 父组件监听子组件事件并传回信息的方法
2017/07/17 Javascript
Vue兼容ie9的问题全面解决方案
2018/06/19 Javascript
JavaScript设计模式之工厂模式简单实例教程
2018/07/03 Javascript
浅谈js闭包理解
2019/04/01 Javascript
Node.js中console.log()输出彩色字体的方法示例
2019/12/01 Javascript
Nuxt pages下不同的页面对应layout下的页面布局操作
2020/11/05 Javascript
wxPython 入门教程
2008/10/07 Python
python操作MongoDB基础知识
2013/11/01 Python
Python中使用动态变量名的方法
2014/05/06 Python
Python的高级Git库 Gittle
2014/09/22 Python
python实现一次创建多级目录的方法
2015/05/15 Python
Django框架模板介绍
2019/01/15 Python
PyQt5 QListWidget选择多项并返回的实例
2019/06/17 Python
Python中使用filter过滤列表的一个小技巧分享
2020/05/02 Python
Python爬虫之App爬虫视频下载的实现
2020/12/08 Python
给同事的道歉信
2014/01/11 职场文书
给实习单位的感谢信
2014/02/01 职场文书
医学生求职自荐书
2014/06/12 职场文书
好的促销活动方案
2014/08/21 职场文书
2014年全国法制宣传日宣传活动方案
2014/11/02 职场文书
文明单位申报材料
2014/12/23 职场文书
go mod 安装依赖 unkown revision问题的解决方案
2021/05/06 Golang
用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X
2021/06/11 Python
Python办公自动化之教你用Python批量识别发票并录入到Excel表格中
2021/06/26 Python
Java 超详细讲解十大排序算法面试无忧
2022/04/08 Java/Android