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 相关文章推荐
程序员编程十条戒律
Jul 09 PHP
PHP内核介绍及扩展开发指南―基础知识
Sep 11 PHP
PHP判断远程url是否有效的几种方法小结
Oct 08 PHP
解析PHP跨站刷票的实现代码
Jun 18 PHP
浅谈php扩展imagick
Jun 02 PHP
php判断数组元素中是否存在某个字符串的方法
Jun 14 PHP
PHP实现利用MySQL保存session的方法
Aug 23 PHP
写一段简单的PHP建立文件夹代码
Jan 06 PHP
Zend Framework教程之Zend_Helpers动作助手ViewRenderer用法详解
Jul 20 PHP
PHP编写简单的App接口
Aug 28 PHP
thinkphp5框架扩展redis类方法示例
May 06 PHP
浅谈Laravel模板实体转义带来的坑
Oct 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实现的多彩标签效果代码分享
2014/08/21 PHP
PHP生成唯一订单号的方法汇总
2015/04/16 PHP
CI框架源码解读之URI.php中_fetch_uri_string()函数用法分析
2016/05/18 PHP
JS通过分析userAgent属性来判断浏览器的类型及版本
2014/03/28 Javascript
JavaScript的jQuery库中function的存在和参数问题
2015/08/13 Javascript
jQuery模仿阿里云购买服务器选择购买时间长度的代码
2016/04/29 Javascript
JavaScript设计模式之单体模式全面解析
2016/09/09 Javascript
JavaScript学习笔记--常用的互动方法
2016/12/07 Javascript
Vue.js仿Metronic高级表格(二)数据渲染
2017/04/19 Javascript
elementui的默认样式修改方法
2018/02/23 Javascript
用p5.js制作烟花特效的示例代码
2018/03/21 Javascript
从零开始搭建webpack+react开发环境的详细步骤
2018/05/18 Javascript
JavaScript闭包原理与用法实例分析
2018/08/10 Javascript
微信小程序学习笔记之文件上传、下载操作图文详解
2019/03/29 Javascript
超简单的微信小程序轮播图
2019/11/22 Javascript
Antd的table组件表格的序号自增操作
2020/10/27 Javascript
[06:21]完美世界亚洲区首席发行官竺琦TI3采访
2013/08/26 DOTA
Python中Random和Math模块学习笔记
2015/05/18 Python
详谈python read readline readlines的区别
2017/09/22 Python
python merge、concat合并数据集的实例讲解
2018/04/12 Python
python 匹配url中是否存在IP地址的方法
2018/06/04 Python
Tensorflow进行多维矩阵的拆分与拼接实例
2020/02/07 Python
html5 canvas-1.canvas介绍(hello canvas)
2013/01/07 HTML / CSS
Hudson Jeans官网:高级精制牛仔裤
2018/11/28 全球购物
澳大利亚实惠时尚女装商店:Katies
2019/06/16 全球购物
巴西最大的巴士票务门户:Quero Passagem
2020/11/21 全球购物
工程师自我评价怎么写
2013/09/19 职场文书
销售文员的岗位职责
2013/11/20 职场文书
毕业生自荐书
2013/12/18 职场文书
先进事迹演讲稿
2014/09/01 职场文书
银行反四风对照检查材料
2014/09/29 职场文书
反对四风自我剖析材料
2014/10/07 职场文书
事业单位聘任报告
2015/03/02 职场文书
《钢铁是怎样炼成的》高中读后感
2019/08/07 职场文书
《我在为谁工作》:工作的质量往往决定生活的质量
2019/12/27 职场文书
MATLAB 如何求取离散点的曲率最大值
2021/04/16 Python