在json_decode /多维数组之后访问JSON数组

问题描述:

我正在从Twitter api中搜索数据,用file_get_contents获取数据,然后传递给json_decode,它给了我这个数组结构。在json_decode /多维数组之后访问JSON数组

{"results":[ 
    { 
    "from_user":"A-user-name", 
    "from_user_id":457304735, 
    "text":"Ich R U #BoysNoize #SuperRola", 

      "entities":{ 

       "urls":[{ 
         "url":"http:\/\/t.co\/WZnUf68j", 
         "expanded_url":"http:\/\/instagr.am\/p\/Vz4Nnbnjd6\/", 
         }] 

    }] 
] 

重复此过程,每鸣叫拉,现在我可以访问用户名和使用foreach循环和结果的每一个实例变量赋值,然后从变量中提取数据的文本。

foreach($jsonArr['results'] as $item){  

// Takes the Array jsonArr and for every results heading creates an $item 

    $user = mysql_real_escape_string($item['from_user']); 
    $text = mysql_real_escape_string($item['text']); 

这节省了正确的变量OK,但我似乎无法得到的数据结果中的实体数组中。如果我打印出实体变种,如用户名或文字,我得到

ArrayArrayArrayArrayArrayArrayArrayArrayArrayArray 

所以它适用于每一个结果返回的数组,但如何在地球上我访问它,我一直在与一些其他方法瞎搞我知道访问数组数据,但它们似乎都是平坦的。与如何获得这些值,或将它们与集成的foreach任何帮助,将不胜感激

+0

只是'print_r($ jsonArr);'看到它的确切结构。我在您发布的“实体”中看不到任何“用户名”或“文本”。 – Ranty 2013-02-18 11:10:28

+0

可能的重复[如何从JSON提取数据与PHP?](https://*.com/questions/29308898/how-do-i-extract-data-from-json-with-php) – 2017-08-16 09:36:06

假设你选择的JSON解码作为一个多维数组,而不是对象:

foreach ($results as $tweet) { 
    $user = $tweet["from-user"]; 
    $text = $tweet["text"]; 

    $entities = $tweet["enities"]; 
    $urls = $entities["urls"]; 

    foreach ($urls as $url) { 
     echo $url["expanded_url"]; 
    } 
} 

等等

+0

谢谢,在你和@Akam之间,我能够得到它的工作,只有另一个层次可以用你的解决方案进行导航。 $ urls = $ entities [“urls”] [0]; – 2013-02-18 12:15:18

Array 
(
    [results] => Array 
     (
      [0] => stdClass Object 
       (
        [entities] => Array 
         (
          [0] => stdClass Object 
           (
            [urls] => Array 
             (
              [0] => stdClass Object 
               (
                [expanded_url] => http://instagr.am/p/Vz4Nnbnjd6/ 
                [url] => http://t.co/WZnUf68j 
               ) 

             ) 

           ) 

         ) 

        [from_user] => A-user-name 
        [from_user_id] => 457304735 
        [text] => Ich R U #BoysNoize #SuperRola 
       ) 

     ) 

) 

访问网址:

$json_array['results'][0]->entities[0]->urls[0]->url; 

有用的代码:

<?php 

$json ='{ "results" : [ { "entities" : 
[ { "urls" : [ { "expanded_url" : "http://instagr.am/p/Vz4Nnbnjd6/", 
        "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)); 
echo '<pre>'; 
//print_r($json_array); 

echo $json_array['results'][0]->entities[0]->urls[0]->url; 

?>

+0

感谢如何在多维数组内导航的布局,在这个和你之间的例子中,它让我解决了我的问题并学习了一些东西。 – 2013-02-18 12:17:47

只是做了print_r($jsonArr);,你将能够与你解码JSON工作。