• 技术文章 >后端开发 >php教程

    php获取json数据所有的节点路径_PHP

    2016-05-29 11:52:21原创289
    之前我们讲解过使用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("//m.sbmmt.com/m/", $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 . '//m.sbmmt.com/m/' . $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);
    

    以上所述就是本文的全部内容了,希望大家能够喜欢。

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php json数据 节点路径
    上一篇:php中PDO方式实现数据库的增删改查_PHP 下一篇:递归实现php数组转xml的代码分享_PHP

    相关文章推荐

    • 对PHP排序稳定性问题的深思!• PHP下MAIL的另一解决方案_PHP教程• PHP file_get_contents 函数超时的几种解决方法_php技巧• PHP日期时间函数的高级应用技巧_php技巧• php miniBB中文乱码问题解决方法_php技巧

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网