@Bamp

Пауза в цикле Foreach?

Вечер добрый ув. форумчане.
Нужно реализовать: чтобы после вывода n-го количества элементов массива можно было поставить вывод на паузу (если так можно выразиться) и дописать дополнительные строки, а после этого продолжить вывод массива.
<div class="exmpl">
<span> элемент_массива_1</span>
<span> элемент_массива_2</span>
 </div>
<div class="exmpl">
<span> элемент_массива_3</span>
<span> элемент_массива_4</span>
 </div>


Надеюсь выразился понятно...
  • Вопрос задан
  • 2932 просмотра
Пригласить эксперта
Ответы на вопрос 2
0neS
@0neS
foreach ($items as $key => $item) {
    echo $item;
    
    if ($key == 2) {
        // example code
    }
}
Ответ написан
Комментировать
AlekseyNemiro
@AlekseyNemiro
full-stack developer
for($i = 1; $i < 100; $i++)
{
  echo "элемент_$i<br />";

  // делаем паузу, если текущий индекс делится на 10 без остатка
  // т.е. каждый 10 элемент будет пауза
  if (($i % 10) == 0)
  {
    echo "пауза 3 секунды :)";
    sleep(3);
  }

}

Для foreach придется счетчик делать (типа $i). Но если такая необходимость возникнет, то по возможности лучше использовать обычный цикл.

UPD: В соответствии с обновлением текста вопроса:
for($i = 0; $i < 100; $i++)
{
  // каждые два элемента помещаем в div
  if (($i % 2) == 0)
  {
    if ($i != 0) 
    {
      // закрываем предыдущий блок, если это не первый блок
      echo "</div>";
    }
    // открываем блок
    echo "<div class='exmpl'>";
  }
  // выводим элемент
  echo "<span> элемент_массива_$i</span><br />";
}
// закрываем последний блок
echo "</div>";

Возможно, через переменную формировать вывод будет проще:
$output = "";
for($i = 0; $i < 100; $i++)
{
  // каждые два элемента помещаем в div
  if ($i != 0 && ($i % 2) == 0)
  {
    // выводим
    echo "<div class='exmpl'>$output</div>";
    // обнуляем
    $output = "";
  }
  // добавляем элемент в очередь на вывод
  $output .= "<span> элемент_массива_$i</span><br />";
}
// выводим остатки
echo "<div class='exmpl'>$output</div>";
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы