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中取得image按钮传递的name值
Oct 09 PHP
PHP 数组实例说明
Aug 18 PHP
MYSQL 小技巧 -- LAST_INSERT_ID
Nov 24 PHP
php for 循环语句使用方法详细说明
May 09 PHP
详解php的魔术方法__get()和__set()使用介绍
Sep 19 PHP
PHP--用万网的接口实现域名查询功能
Dec 13 PHP
wordpress自定义url参数实现路由功能的代码示例
Nov 28 PHP
ecshop 2.72如何修改后台访问地址
Mar 03 PHP
php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间
Nov 07 PHP
PHP未登录自动跳转到登录页面
Dec 21 PHP
thinkPHP+ajax实现统计页面pv浏览量的方法
Mar 15 PHP
thinkPHP框架实现生成条形码的方法示例
Jun 06 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
hessian 在PHP中的使用介绍
2010/12/13 PHP
Zend Framework教程之Zend_Db_Table表关联实例详解
2016/03/23 PHP
thinkPHP+phpexcel实现excel报表输出功能示例
2017/06/06 PHP
php实现socket推送技术的示例
2017/12/20 PHP
laravel validate 设置为中文的例子(验证提示为中文)
2019/09/29 PHP
laravel框架查询数据集转为数组的两种方法
2019/10/10 PHP
javascript修改表格背景色实例代码分享
2013/12/10 Javascript
js中indexof的用法详细解析
2013/12/24 Javascript
js实现图片拖动改变顺序附图
2014/05/13 Javascript
js中iframe调用父页面的方法
2014/10/30 Javascript
JavaScript DOM操作表格及样式
2015/04/13 Javascript
深入学习JavaScript对象
2015/10/13 Javascript
JavaScript实现简洁的俄罗斯方块完整实例
2016/03/01 Javascript
JavaScript的React框架中的JSX语法学习入门教程
2016/03/05 Javascript
悬浮广告方法日常收集整理
2016/03/18 Javascript
浅谈js中的变量名和函数名重名
2017/02/13 Javascript
js实现移动端轮播图效果
2020/12/09 Javascript
JS函数内部属性之arguments和this实例解析
2018/10/07 Javascript
微信小程序冒泡事件及其阻止方法实例分析
2018/12/06 Javascript
js布局实现单选按钮控件
2020/01/17 Javascript
VUE中V-IF条件判断改变元素的样式操作
2020/08/09 Javascript
python字符串连接方法分析
2016/04/12 Python
使用Python+Splinter自动刷新抢12306火车票
2018/01/03 Python
pyqt5实现按钮添加背景图片以及背景图片的切换方法
2019/06/13 Python
基于HTML5 FileSystem API的使用介绍
2013/04/24 HTML / CSS
JACK & JONES英国官方网站:欧洲领先的男装生产商
2017/09/27 全球购物
Vrbo英国:预订度假屋
2020/08/19 全球购物
什么是虚拟内存?虚拟内存有什么优势?
2012/02/19 面试题
社区活动总结报告
2014/05/05 职场文书
合唱兴趣小组活动总结
2014/07/10 职场文书
材料物理专业求职信
2014/09/01 职场文书
区政府领导班子个人对照检查材料
2014/09/25 职场文书
会计工作检讨书
2015/02/19 职场文书
2015年世界无车日活动总结
2015/03/23 职场文书
怎样写好工作计划
2019/04/10 职场文书
搭建Yolov5服务器
2022/04/30 Servers