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 相关文章推荐
通过ODBC连接的SQL SERVER实例
Oct 09 PHP
使用Xdebug调试和优化PHP程序之[1]
Apr 17 PHP
php ftp文件上传函数(基础版)
Jun 03 PHP
php下清空字符串中的HTML标签的代码
Sep 06 PHP
php中神奇的fastcgi_finish_request
May 02 PHP
PHP高级对象构建 工厂模式的使用
Feb 05 PHP
php数组去重实例及分析
Nov 26 PHP
php+mysqli预处理技术实现添加、修改及删除多条数据的方法
Jan 30 PHP
PHP实现的迷你漂流瓶
Jul 29 PHP
Yii2框架实现利用mpdf创建pdf文件功能示例
Feb 08 PHP
Ajax+PHP实现的模拟进度条功能示例
Feb 11 PHP
Laravel5框架自定义错误页面配置操作示例
Apr 17 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实现采集程序原理和简单示例代码
2007/03/18 PHP
php动态生成JavaScript代码
2009/03/09 PHP
PHP实现通用alert函数的方法
2015/03/11 PHP
php发送html格式文本邮件的方法
2015/06/10 PHP
在Mac OS上搭建PHP的Yii框架及相关测试环境
2016/02/14 PHP
Yii2.0 Basic代码中路由链接被转义的处理方法
2016/09/21 PHP
php 解决扫描二维码下载跳转问题
2017/01/13 PHP
PHP ADODB实现事务处理功能示例
2018/05/25 PHP
PHP优化之批量操作MySQL实例分析
2020/04/23 PHP
Alliance vs AM BO3 第二场2.13
2021/03/10 DOTA
javascript面向对象编程(一) 实例代码
2010/06/25 Javascript
jquery不会自动回收xmlHttpRequest对象 导致了内存溢出
2012/06/18 Javascript
无缝滚动js代码通俗易懂(自写)
2013/06/19 Javascript
js对象转json数组的简单实现案例
2014/02/28 Javascript
js分页代码分享
2014/04/28 Javascript
jquery获取及设置outerhtml的方法
2015/03/09 Javascript
解析js如何获取css样式
2016/12/11 Javascript
canvas实现动态小球重叠效果
2017/02/06 Javascript
Angularjs单选改为多选的开发过程及问题解析
2017/02/17 Javascript
AngularJS实现动态切换样式的方法分析
2018/06/26 Javascript
javascript显示动态时间的方法汇总
2018/07/06 Javascript
vue+iview 实现可编辑表格的示例代码
2018/10/31 Javascript
Python实现从脚本里运行scrapy的方法
2015/04/07 Python
十个Python程序员易犯的错误
2015/12/15 Python
python多进程和多线程究竟谁更快(详解)
2017/05/29 Python
初次部署django+gunicorn+nginx的方法步骤
2019/09/11 Python
Vrbo英国:预订度假屋
2020/08/19 全球购物
什么是.net
2015/08/03 面试题
门前三包责任书
2014/04/15 职场文书
宣传口号大全
2014/06/16 职场文书
电焊工岗位工作职责
2014/07/09 职场文书
群众路线教育实践活动民主生活会个人检查对照思想汇报
2014/10/04 职场文书
2014年学校团委工作总结
2014/12/20 职场文书
如何做好员工培训计划?
2019/07/09 职场文书
Python中异常处理用法
2021/11/27 Python
使用pd.merge表连接出现多余行的问题解决
2022/06/16 Python