Задать вопрос
@FRATEREH

Как вывести все значение массива а не только одно?

У меня есть первичный массив

{
  "results": [
    {
      "question": "Ты кто?",
      "answer": "Вася",
      "topic": [
        "Имя"
      ]
    },
  {
      "question": "Сколько лет?",
      "answer": "5",
      "topic": [
        "Возраст"
      ]
    }
}


Задача стоит в том, что бы вывести сначала Имя, потом Вопрос и Ответ
Но если я напишу вложенный foreach то оно выведет сначала все данные массива Вопрос и Ответ циклом, а только потом Имя, тоже происходит если выводить каждый элемент отдельно, а потом делать конкатенацию типо $q.$q2

Поэтому я написал подобный код

$qan1 = []; $qan2 = []; $qan3 = []; $qan5 = '';
foreach ($data['results'] as $repository2){ foreach ($repository2['topic'] as $repository3){
$qan3[] = $repository3;}
$qan1[] = $repository2['question'];
$qan2[] = $repository2['answer'];}
$qan4 = array($qan3,$qan1,$qan2);
foreach ($qan4 as $repos):
$qan5 .= '<dt><span>'.$repos[0].'</span><div class="acc-icon-wrap parallax-wrap"><div class="acc-button-icon parallax-element"><i class="fa fa-angle-down"></i></div></div></dt><dd class="accordion-content"><h3>Question</h3><dd>'.$repos[1].'</dd><h3>Answer</h3><dd>'.$repos[2].'</dd></div>';
endforeach;
return $qan5;


В котором я вывожу все элементы в массивы и делаю их общий массив

в $qan4 у меня получается нечто подобное

(
    [0] => Array
        (
            [0] => Имя
            [1] => Возраст
         )
[1] => Array
        (
            [0] => Ты кто?
            [1] => Сколько лет?
         )
[2] => Array
        (
            [0] => Вася
            [1] => 5
         )
)


Но когда я делаю эту часть кода начинается проблема

foreach ($qan4 as $repos):
$qan5 .= '<dt><span>'.$repos[0].'</span><div class="acc-icon-wrap parallax-wrap"><div class="acc-button-icon parallax-element"><i class="fa fa-angle-down"></i></div></div></dt><dd class="accordion-content"><h3>Question</h3><dd>'.$repos[1].'</dd><h3>Answer</h3><dd>'.$repos[2].'</dd></div>';
endforeach;
return $qan5;


Потому что вместо вывода всех значений массива в $repos[0] оно выводит только Вася, а потом $repos[1] Сколько лет - вообще некорректно и я не понимаю как это исправить

потому что если я пишу скажем так

($qan4[0] as $reposit) : echo $reposit; endforeach;


то выводит все элементы ключа правильно
  • Вопрос задан
  • 188 просмотров
Подписаться 1 Простой 26 комментариев
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
так, во первых не надо выводить через ечо хтмл.
Во вторых - у вас в цикле есть все необходимые ключи, вы видимо тупите, по этому на пальцах объясняю, надеюсь поможет...
<?php
...
foreach ($data['results'] as $repo){ 
?> //закрыли пхп, дальше выводим хтмл 
<dt>
   <span>
         <?=join(', ', $repo['topic']);?> //сделали пхп вывод где надо, и дальше выводим хтмл... 
   </span> 
   <div class="acc-icon-wrap parallax-wrap">
      <div class="acc-button-icon parallax-element">
          <i class="fa fa-angle-down"></i>
       </div>
   </div>
</dt>
<dd class="accordion-content">
   <h3>Question</h3>
<dd><?=$repo['question']?></dd>
<h3>Answer</h3>
<dd><?=$repo['ansver']?></dd>
<?php } ?>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы