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&amp;mysql(六)
Oct 09 PHP
php+mysql 实现身份验证代码
Mar 24 PHP
PHPWind与Discuz截取字符函数substrs与cutstr性能比较
Dec 05 PHP
PHP Session 变量的使用方法详解与实例代码
Sep 11 PHP
php session劫持和防范的方法
Nov 12 PHP
PHP 利用Mail_MimeDecode类提取邮件信息示例
Jan 26 PHP
destoon调用企业会员公司形象图片的实现方法
Aug 21 PHP
PHP中strpos、strstr和stripos、stristr函数分析
Jun 11 PHP
PHP快速排序quicksort实例详解
Sep 28 PHP
Yii框架中sphinx索引配置方法解析
Oct 18 PHP
php使用Jpgraph创建折线图效果示例
Feb 15 PHP
php实现生成带二维码图片并强制下载功能
Feb 24 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在线生成ico文件的代码
2007/10/09 PHP
浅谈PHP与C#的值类型指向区别的详解
2013/05/21 PHP
php目录操作实例代码
2014/02/21 PHP
PHP中串行化用法示例
2016/11/16 PHP
js 解决“options为空或不是对象”
2008/12/22 Javascript
ajax 文件上传应用简单实现
2009/03/03 Javascript
jquery lazyload延迟加载技术的实现原理分析
2011/01/24 Javascript
Javascript 浮点运算的问题分析与解决方法
2013/08/27 Javascript
JS拖动鼠标画出方框实现鼠标选区的方法
2015/08/05 Javascript
理解javascript中DOM事件
2015/12/25 Javascript
JavaScript中对象的不同创建方法
2016/08/12 Javascript
bootstrap学习使用(导航条、下拉菜单、轮播、栅格布局等)
2016/12/01 Javascript
基于javascript的Form表单验证
2016/12/29 Javascript
二维码图片生成器QRCode.js简单介绍
2017/08/18 Javascript
浅谈Angular2 ng-content 指令在组件中嵌入内容
2017/08/18 Javascript
基于React+Redux的SSR实现方法
2018/07/03 Javascript
vue项目引入字体.ttf的方法
2018/09/28 Javascript
Vue父组件如何获取子组件中的变量
2019/07/24 Javascript
阿望教你用vue写扫雷小游戏
2020/01/20 Javascript
有关vue 开发钉钉 H5 微应用 dd.ready() 不执行问题及快速解决方案
2020/05/09 Javascript
git使用.gitignore设置不生效或不起作用问题的解决方法
2017/06/01 Python
使用Django Form解决表单数据无法动态刷新的两种方法
2017/07/14 Python
PIL图像处理模块paste方法简单使用详解
2019/07/17 Python
树莓派安装OpenCV3完整过程的实现
2019/10/10 Python
python 实现图片上传接口开发 并生成可以访问的图片url
2019/12/18 Python
django 前端页面如何实现显示前N条数据
2020/03/16 Python
Python面向对象程序设计之类和对象、实例变量、类变量用法分析
2020/03/23 Python
什么是python的自省
2020/06/21 Python
详解python算法常用技巧与内置库
2020/10/17 Python
HTML5 自动聚焦(autofocus)属性使用介绍
2013/08/07 HTML / CSS
.NET是怎么支持多种语言的
2015/02/24 面试题
出生证明公证书
2014/04/09 职场文书
毕业设计论文评语
2014/12/31 职场文书
药品销售内勤岗位职责
2015/04/13 职场文书
幼儿园科学课教学反思
2016/03/03 职场文书
TaiShan 200服务器安装Ubuntu 18.04的图文教程
2022/06/28 Servers