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 模板高级篇总结
Dec 21 PHP
PHP编程中字符串处理的5个技巧小结
Nov 13 PHP
php面向对象全攻略 (一) 面向对象基础知识
Sep 30 PHP
AMFPHP php远程调用(RPC, Remote Procedure Call)工具 快速入门教程
May 10 PHP
PHP5 的对象赋值机制介绍
Aug 02 PHP
基于Snoopy的PHP近似完美获取网站编码的代码
Oct 23 PHP
ThinkPHP数据操作方法总结
Sep 28 PHP
PHP5.5.15+Apache2.4.10+MySQL5.6.20配置方法分享
May 06 PHP
由php中字符offset特征造成的绕过漏洞详解
Jul 07 PHP
PHP回调函数与匿名函数实例详解
Aug 16 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
Sep 20 PHP
PHP SESSION跨页面传递失败解决方案
Dec 11 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
漫荒推荐:画风超赞的国风漫画推荐 超长假期不无聊
2020/03/08 国漫
玩转图像函数库―常见图形操作
2006/09/03 PHP
php中数组首字符过滤功能代码
2012/07/31 PHP
php下获取http状态的实现代码
2014/05/09 PHP
PHP实现正则匹配所有括号中的内容
2018/06/22 PHP
php7性能提升的原因详解
2019/10/13 PHP
jQuery制作的别致导航有阴影背景高亮模式窗口
2014/04/15 Javascript
jQuery序列化后的表单值转换成Json
2017/06/16 jQuery
vue 每次渲染完页面后div的滚动条保持在最底部的方法
2018/03/17 Javascript
使用electron将vue-cli项目打包成exe的方法
2018/09/29 Javascript
layui中select,radio设置不生效的解决方法
2019/09/05 Javascript
JS实现单张或多张图片持续无缝滚动的示例代码
2020/05/10 Javascript
解决vue 使用axios.all()方法发起多个请求控制台报错的问题
2020/11/09 Javascript
详解Python中的正则表达式的用法
2015/04/09 Python
详解Python Socket网络编程
2016/01/05 Python
浅析Python编写函数装饰器
2016/03/18 Python
Python冒泡排序注意要点实例详解
2016/09/09 Python
TensorFlow神经网络优化策略学习
2018/03/09 Python
python 读文件,然后转化为矩阵的实例
2018/04/23 Python
Sanic框架应用部署方法详解
2018/07/18 Python
python numpy 按行归一化的实例
2019/01/21 Python
Python实现的银行系统模拟程序完整案例
2019/04/12 Python
解决python有时候import不了当前的包问题
2019/08/28 Python
python基于event实现线程间通信控制
2020/01/13 Python
pytorch实现CNN卷积神经网络
2020/02/19 Python
python字符串拼接+和join的区别详解
2020/12/03 Python
HTML5不支持标签和新增标签详解
2016/06/27 HTML / CSS
Pat McGrath Labs官网:世界上最有影响力的化妆师推出的彩妆品牌
2018/01/07 全球购物
加拿大廉价机票预订网站:CheapOair.ca
2018/03/04 全球购物
Solaris操作系统的线程机制
2012/12/23 面试题
乡镇2014法制宣传日活动总结
2014/11/01 职场文书
自我检讨书范文
2015/01/28 职场文书
2015年检察院个人工作总结
2015/05/20 职场文书
四十年同学聚会致辞
2015/07/28 职场文书
莫言获奖感言(全文)
2015/07/31 职场文书
Python基础之tkinter图形化界面学习
2021/04/29 Python