Цикл по JSON декодированному массиву в PHP - PullRequest
0 голосов
/ 18 октября 2019

У меня есть данные в формате Json, которые я декодировал в массив php, который при распечатке выдает следующее (просто фрагмент информации).

Array (
[Title] => Array([Heading] => Company Name [Info] =>)
[SubTitle] => Array([Heading] => Welcome to Company Name[Info] =>information on the company)
)

Мой вопрос заключается в том, как мне циклически просмотреть эту информацию и распечатать заголовок, а затем распечатать значение.

Я попробовал следующее, которое печатает все данные за один раз

  foreach($data['SubTitle'] as $key => $value){

    echo $value;
   }

И затем я попытался это просто напечатать раздел информации, который, как я думал, мог бы работать, но вместо этого выбрасывает недопустимую строкуошибка смещения

   foreach($data['SubTitle'] as $key => $v){

    echo $v['Info'];
   }

Я могу получить информацию из массива заголовков, так как он прямолинейный, поскольку в заголовке содержится только значение данных. Однако я хотел бы, чтобы выходные данные из массива субтитров выводили заголовок и информацию, как показано ниже:

Добро пожаловать в название компании

Информация о компании

Я думал, что это будетпрямо вперед, но это оказывается гораздо сложнее, чем ожидалось, и заняло много времени, поэтому любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 18 октября 2019

Итак, я предполагаю, что у вас есть строка JSON, которая выглядит следующим образом:

$json = '{"Title":{"Heading": "Company Name", "Info": null}, "SubTitle": {"Heading": "Welcome to Company Name", "Info": "information on the company"}}';

визуализируется, выглядит примерно так:

enter image description here

Итак, если вы расшифровали этот json в ассоциативный массив:

$result = json_decode($json, true);

Затем, чтобы получить доступ к данным, вам не нужно «зацикливаться» на них;все, что вам нужно сделать, это:

echo $result['Title']['Heading']; // will print 'Company Name'
echo $result['Title']['Info']; // will print nothing, as it is empty
echo $result['SubTitle']['Heading']; // will print 'Welcome to Company Name'
echo $result['SubTitle']['Info']; // will print 'information on the company'

Надеюсь, это поможет. Это основной PHP, пожалуйста, посмотрите следующие материалы для чтения:

0 голосов
/ 18 октября 2019

Измените свой код, с этого:

foreach($data['SubTitle'] as $key => $v){
    echo $v['Info'];
}

На это:

foreach($data['SubTitle'] as $v){
    echo $v . "<br/>"; // the <br/> makes a new line
}

Вывод будет:

Welcome to Company Name
Information on the company

$ v больше не является массивом в foreach, он становится переменной.

Некоторая информация о тегах html: https://www.w3schools.com/tags/

Также посмотрите, как работает цикл: https://www.guru99.com/php-loop.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...