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 相关文章推荐
ajax缓存问题解决途径
Dec 06 PHP
hessian 在PHP中的使用介绍
Dec 13 PHP
PHP中$_FILES的使用方法及注意事项说明
Feb 14 PHP
php返回json数据函数实例
Oct 09 PHP
php使用curl获取https请求的方法
Feb 11 PHP
PHP设计模式之适配器模式代码实例
May 11 PHP
php发送邮件的问题详解
Jun 22 PHP
jquery+php实现导出datatables插件数据到excel的方法
Jul 06 PHP
win7系统配置php+Apache+mysql环境的方法
Aug 21 PHP
PHP实现文件上传与下载实例与总结
Mar 13 PHP
PHP使用PDO调用mssql存储过程的方法示例
Oct 07 PHP
php实现微信公众平台发红包功能
Jun 14 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自动加载的两种实现方法
2010/06/21 PHP
使用php方法curl抓取AJAX异步内容思路分析及代码分享
2014/08/25 PHP
Thinkphp搜索时首页分页和搜索页保持条件分页的方法
2014/12/05 PHP
PHP封装CURL扩展类实例
2015/07/28 PHP
WordPress中用于检索模版的相关PHP函数使用解析
2015/12/15 PHP
Packer 3.0 JS压缩及混淆工具 下载
2007/05/03 Javascript
JavaScript 全面解析各种浏览器网页中的JS 执行顺序
2009/02/17 Javascript
用JavaScript获取DOM元素位置和尺寸大小的方法
2013/04/12 Javascript
js禁止页面刷新禁止用F5键刷新禁止右键的示例代码
2013/09/23 Javascript
Validform+layer实现漂亮的表单验证特效
2016/01/17 Javascript
酷炫jQuery全屏3D焦点图动画效果
2016/03/22 Javascript
jQuery实现鼠标跟随提示层效果代码(可显示文本,Div,Table,Html等)
2016/04/18 Javascript
Bootstrap每天必学之标签页(Tab)插件
2020/08/09 Javascript
JavaScript中windows.open()、windows.close()方法详解
2016/07/28 Javascript
浅谈javascript中遇到的字符串对象处理
2016/11/18 Javascript
jQuery读取XML文件的方法示例
2017/02/03 Javascript
用Webpack构建Vue项目的实践
2017/11/07 Javascript
vue的一个分页组件的示例代码
2017/12/25 Javascript
微信小程序实现bindtap等事件传参
2019/04/08 Javascript
Python日志模块logging简介
2015/04/13 Python
Python3.4 tkinter,PIL图片转换
2018/06/21 Python
在Python中将函数作为另一个函数的参数传入并调用的方法
2019/01/22 Python
安装完Python包然后找不到模块的解决步骤
2020/02/13 Python
草莓网美国官网:Strawberrynet USA
2016/12/11 全球购物
父亲追悼会答谢词
2014/01/17 职场文书
2014年五四青年节活动策划书
2014/04/22 职场文书
优秀的应届生自荐信
2014/05/23 职场文书
2015年驾驶员工作总结
2015/04/29 职场文书
百万英镑观后感
2015/06/09 职场文书
导游词之贵州织金洞
2019/10/12 职场文书
教你解决往mysql数据库中存入汉字报错的方法
2021/05/06 MySQL
python spilt()分隔字符串的实现示例
2021/05/21 Python
python用tkinter开发的扫雷游戏
2021/06/01 Python
MySQL命令无法输入中文问题的解决方式
2021/08/30 MySQL
8个JS的reduce使用实例和reduce操作方式
2021/10/05 Javascript
叶县这家生产军用电台的兵工厂,人称“四机部”,走出一上将
2022/02/18 无线电