2015-05-05 4 views
0

Прежде всего, мне жаль, если это дублированный вопрос, но я не мог найти ничего, что могло бы работать и решить мою проблему.php получить конкретный тег элемента массива json

Я беру данные из БД (Postgres) и разбираю их в массив Json. данные выглядит следующим образом

[{"login":"[email protected]","first_name":"Admin","last_name":"Name","title":null},{"login":"[email protected]","first_name":"More","last_name":"Data","title":"X"}] 

Мой код для извлечения этих данных что-то вроде этого:

foreach ($jsonData as $us) { 
    $user = new App\User; 
    $user->name = $us->login; //same thing for the rest of data 

Ошибка я получаю говорит, что я не могу назвать данные из JSON с -> но var_dump'ing $ jsonData утверждает, что это массив со всеми правильными элементами в нем.

PS: забыл добавить, но я пытался var_dump($jsonData['login'][0]); получить только первый вход (должно быть «корень @ локальный»), но он говорит: «Не определен индекс: войти»

+1

У вас есть указатель назад, когда вы делали 'var_dump ($ jsonData ['login'] [0]);'. Если вы сделали 'var_dump ($ jsonData [0] ['login']), он должен работать –

+0

Может быть, не имеет значения, но я думаю, что в вашем цикле foreach отсутствует закрывающий'} '? – lozadaOmr

+0

Кроме того, что '->' не работает. PHP имеет метод 'json_decode()', который позволяет обрабатывать строку JSON в массиве или объекте (на основе логического параметра в функции). Я предполагаю, что ваш привод базы данных автоматически анализирует данные в массиве после запроса на него. Я предполагаю, что вы видели несколько примеров, когда данные JSON являются объектом, что вызывает некоторую путаницу для вас. Может быть, неправильно, просто хотел бросить это там. –

ответ

0

Потому что JSON не хранить в объект, но в массиве:

foreach ($jsonData as $us) { 
    $user = new App\User; 
    $user->name = $us['login']; //same thing for the rest of data 
} 
+0

Должно быть, я неправильно впечатал что-то неправильно в прошлый раз, когда я попробовал это, потому что теперь, когда я это сделал, как вы это делали, он работал нормально. Возможно, это потому, что я использовал скобки «" вместо двоеточия »или что-то в этом роде. В любом случае, большое спасибо за помощь! – Thaenor

Смежные вопросы