PHP echo JSON嵌套数组值

时间:2015-05-22 00:14:44

标签: php arrays json multidimensional-array

我希望回显所有expanded_url和url。 echo $name打印结果echo $value由于嵌套数组而无法打印任何内容。如何回显所有值?

$json ='{ "results" : [ { "entities" : 
[ { "urls" : [ { "expanded_url" : "http://www.google.com",
                    "url" : "http://t.co/WZnUf68j"
                  },  { "expanded_url" : "http://www.facebook.com",
                    "url" : "http://t.co/WZnUf68j"
                  }, { "expanded_url" : "http://www.twitter.com",
                    "url" : "http://t.co/WZnUf68j"
                  } ] } ],
        "from_user" : "A-user-name",
        "from_user_id" : 457304735,
        "text" : "Ich R U #BoysNoize #SuperRola"
      } ] }';
# $json_array = (array)(json_decode($json));

$data = json_decode($json,true);
foreach($data as $name => $value){
    echo $name.'<br>';
    echo $value; // NOT WORKING - HOW TO ECHO ALL VALUES    
}

2 个答案:

答案 0 :(得分:1)

你可以用

做到这一点
$data = json_decode($json,true);
foreach($data["results"][0]["entities"][0]["urls"] as $value){
    echo $value['expanded_url']."\n";
    echo $value['url']."\n";
}

答案 1 :(得分:1)

由于它是一个多维数组,您可以遍历各个级别以达到您想要的位置。

foreach($data['results'] as $item) {
    foreach($item['entities'] as $urls) {
        foreach($urls['urls'] as $element) {
            echo "expanded_url: {$element['expanded_url']} \n";
            echo "url: {$element['url']} \n";
        }
    }
}

注意: 我完成各种foreach循环的原因是由于可能存在不同{ {1}}或不同results,因此最好循环,而不是entities

Example