Я пытаюсь выполнить поиск из авиалинии Twitter, получая данные с помощью file_get_contents, а затем передавая json_decode, которые дают мне эту структуру массива.
{"results":[ { "from_user":"A-user-name", "from_user_id":457304735, "text":"Ich RU #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']);
Это сохраняет правильные переменные в порядке, но я не могу получить данные в массиве объектов в результатах. Если я распечатаю Entities var, как имя пользователя или текст, который я получаю
ArrayArrayArrayArrayArrayArrayArrayArrayArrayArray
Таким образом, он содержит массивы для каждого возвращаемого результата, но как я могу получить доступ к нему, я уже возился с несколькими другими методами, которые я знаю для доступа к данным массива, но все они кажутся плоскими. Любая помощь в том, как получить эти значения или интегрировать их с foreach, будет с благодарностью
Предполагая, что вы решили декодировать 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"]; } }
и т. д.
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 RU #BoysNoize #SuperRola ) ) )
Доступ к URL:
$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 RU #BoysNoize #SuperRola" } ] }'; $json_array = (array)(json_decode($json)); echo '<pre>'; //print_r($json_array); echo $json_array['results'][0]->entities[0]->urls[0]->url;
?>
Просто выполните print_r($jsonArr);
и вы сможете работать с вашим декодированным json.