Home > php教程 > php手册 > body text

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

WBOY
Release: 2016-06-06 19:38:16
Original
968 people have browsed it

无 无 ?phpfunction 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; } $hea

<?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);
Copy after login
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template