Intereting Posts
php – Как подсчитывать элементы элементов в массиве twitter oauth: получение неопределенного индекса: oauth_token_secret в Необычная ошибка «Заголовки уже отправлены». Отсутствие пробелов или изменение заголовка Symfony 2: класс не найден в контроллере Библиотека парсера, написанная на PHP Ошибка FPDF: некоторые данные уже выведены, не удается отправить файл PDF на 000webhost получить (динамическую страницу загрузки) с помощью PHP / CURL? Вставка большого количества переменных в таблицу с использованием PDO Отправка информации в ngnix из php на том же сервере без http Имена функций Php в паре с классами Невозможно использовать возвращаемое значение функции в контексте записи Конфигурация маршрутизатора ZF2 для субдомена с дочерними маршрутами Как разместить div в пользовательском месте на странице Планирование системы заказа новостей PHP Создание UL LI, UL LI

Доступ к массиву JSON после json_decode / многомерного массива

Я пытаюсь выполнить поиск из авиалинии 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.