Цикл PHP foreach внутри цикла foreach доступа к переменным

#php #curl

#php #curl

Вопрос:

Я отредактировал свой вопрос. Я пытаюсь перебрать каждый массив и использовать его внутри одного цикла foreach, возможно ли это?

 foreach ($exhibitor as $exhibitors)
{
    //Foreach loop of each variable we need
    foreach ($exhibitorsLoop as $i) {
        $names[] = $i['exhibitor']['exhname'];
        $logos[] = $i['exhibitor']['onlinelogo'];
        //Sponsorship level 2-11
        $packages[] = $i['exhibitor']['package'];
        $descriptions[] = $i['exhibitor']['description'];
        $websites[] = $i['exhibitor']['website'];
    }
}
  

Как я планирую его использовать

         <div>
            <img class="img-responsive" src="<?php $logo ?>" alt="">
        </div>
        <div class="col-sm-8">
            <h1 style="margin-top:0;"><?php echo $name; ?></h1>
            <h2><?php echo $website; ?></h2>
        </div>
  

Когда я печатаю значение, такое как print_r ($ logos), я получаю все значения. Когда я пишу цикл foreach, такой как

 foreach ($names as $name) {
 echo $name;
}
  

Он также возвращает значение. Но у меня возникли проблемы с тем, чтобы он правильно возвращался в html-блоке. Нужно ли мне писать цикл foreach для каждого массива (имена, логотипы, пакеты и т.д.)?

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

Ответ №1:

Ваш фрагмент кода здесь не имеет смысла:

     //sub loop foreach 
    foreach ($jsonLoop as $i) {

    //example data
    $data= $i['value']['subvalue'];

    }
  

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

     //example data
    $data[] = $jsonLoop;
  

И вместо вашей второй части:

 <?php foreach ($item as $items)
    foreach ($jsonLoop as $i) : ?>

<div class="col-sm-12">
    testing: <?php echo $data ?>
</div>

<?php endforeach; ?>
  

Просто выведите собранные данные:

     print_r($data);
  

Если вам нужно отформатировать html, вы можете расширить его, но все, что вам нужно, находится в вашем $data сейчас.

Ответ №2:

Вот как я это делаю, я думаю, это работает для меня: внутри второго цикла я просто получаю все

     foreach ($exhibitorsLoop as $i) {
      $data[] = $exhibitorsLoop;
    }

  

И затем в HTML я вызываю конкретно то, что мне нужно из массива

 <table>
    <?php foreach ($data as $d) : ?>
      <tr>
        <td> <?php echo $d[0]['exhibitor']['exhname']; ?> </td>
        <td> <?php echo $d[0]['exhibitor']['onlinelogo']; ?> </td>
      </tr>
    <?php endforeach; ?>
</table>
  

Если это не самый чистый способ, дайте мне знать, но я думаю, что это то, что мне нужно.