Intereting Posts

Чтение строки Json / Array в Php

У меня есть строка, которая находится в действительном формате Json, и выглядит следующим образом:

{ "message": "success", "result": { "46620": { "course_id": "29", "en_title": "Google Analytics (Basic)", "fa_title": "مبانی Ú¯ÙˆÚ¯Ù„ آنالیتیکز", "badge_link": "http://www.darsnameh.com/badge/index.php?user=46620&badge=" }, "49449": { "course_id": "16", "en_title": "Multimedia Reporting 1- Reporting in the Internet Age", "fa_title": "گزارش‌گری چندرسانه‌ای Û±- گزارشگری در زمانه‌ی اينترنت", "badge_link": "http://www.darsnameh.com/badge/index.php?user=49449&badge=" }, "55480": { "course_id": "33", "en_title": "HTML for Journalists and Bloggers", "fa_title": "آشنایی با اچ‌تی‌ام‌ال Ùˆ Ùناوری‌های اینترنت برای روزنامه‌نگاران Ùˆ وبلاگ‌نویس‌ها", "badge_link": "http://www.darsnameh.com/badge/index.php?user=55480&badge=" }, "59250": { "course_id": "31", "en_title": "Twitter", "fa_title": "توییتر", "badge_link": "http://www.darsnameh.com/badge/index.php?user=59250&badge=" }, "103716": { "course_id": "42", "en_title": "How to write a CV?", "fa_title": "چگونه رزومه بنویسیم؟", "badge_link": "http://www.darsnameh.com/badge/index.php?user=103716&badge=" } } } 

Я хочу читать разные поля, например, все fa_titles, я использую $ obj = json_decode ($ str, true); чтобы преобразовать это в Json, затем echo sizeof ($ obj ['result']); показывает, что у него есть 5 объектов результата, но как теперь я могу получить доступ к полям fa_title или en_title?

В JSON массивы обозначаются скобками ( [ и ] ), в то время как словари имеют только фигурные скобки ( { и } ).

Вы можете получить доступ к каждому объекту результата индивидуально, выполнив $obj['result']['46620']['en_title'] . Объект результата – ассоциативный массив (также известный как словарь) ассоциативных массивов.

Вы также можете перебирать каждый объект с помощью цикла foreach , как показано в этом вопросе

Чтобы просмотреть все результаты, что-то вроде этого должно это сделать:

 $obj = json_decode($str); foreach ($obj->result as $result) { $fa_title = $result->fa_title; $en_title = $result->en_title; }