2015-05-22 60 views
0

我想回显所有expanded_url和url。 echo $name打印结果。由于嵌套数组,因此echo $value不会打印任何内容。我如何回复所有值?PHP echo JSON嵌套数组值

$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  
} 
+1

心不是什么的var_dump和print_r的一重新为?但如果你必须,你只需要递归地接近它。 – Rooster

+0

你有数组(array(array()));不能做1 foreach跟踪 –

回答

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

因为它是一个多维数组,可以遍历各个层次以到达你想要的。

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循环的原因是由于这样的事实,可能有不同的results或不同entities,所以它是更好地循环,而不是做foreach($data["results"][0]["entities"][0]["urls"] as $value)

Example