azorr
@azorr
программирую по мере возможности..

Как заставить foreach перебирать не с начала?

Друзья!
Есть необходимость выводить записи циклом foreach - но не с начала массива.
Это необходимо для вывода записей из одной таблицы в разные места (в div- вы, так как все не умещается в одном) .

Первые 12 записей вывожу без проблем:

<div class="block_1">

	<?php $count_item = 0; ?>// Обнуляю счетчик

	<?php foreach ($array_items as $buffer): ?>

		<?php if ($count_item < "12") { ?>

			<?php $count_item++; ?>// прибавляю счетчик

			<?php $post_zagolovok = function_get_zagolovok($buffer["id_zagolovok"]); ?>
			<h2> <?= $post_zagolovok ?> </h2>
			<p> <?= $buffer['text_publick'] ?> </p>
</div>


* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

А вот следующие 12 записей, почему то тоже выводятся начиная с начала, вместо того что бы выводиться с 13-й записи..

<div class="block_2">

	<?php $count_item = 13; ?>// Выставляю счетчик уже с 13-той записи

	<?php foreach ($array_items as $buffer): ?>

		<?php if ($count_item > "13" and $count_item < "24") { ?>

			<?php $count_item++; ?>// прибавляю счетчик

			<?php $post_zagolovok = function_get_zagolovok($buffer["id_zagolovok"]); ?>
			<h2> <?= $post_zagolovok ?> </h2>
			<p> <?= $buffer['text_publick'] ?> </p>
</div>


По сути, второй блок кода, просто дублирует записи, в место того, что бы выводить уже следующие 12 записей.

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

Подскажите пожалуйста, как сказать циклу foreach, начать выводить записи с определенной записи?!
  • Вопрос задан
  • 844 просмотра
Решения вопроса 1
Compolomus
@Compolomus Куратор тега PHP
Комполом-быдлокодер
В ходе обсуждения родилось
array_slice
https://www.php.net/manual/ru/function.array-slice.php
foreach (array_slice($array, 0, 12) as $buf) {

}

foreach (array_slice($array, 12) as  $buf) {

}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
для таких итераций используют не foreach(), a for(), соответственно счетчики могут быть использованы в любом месте с любого значения.
Ответ написан
serginhold
@serginhold
Разбей массив на части через array_chunk
Ответ написан
Newn
@Newn
Если у вас используется 1 цикл в разных блоках сайта, то не обязательно что-то разбивать и придумывать, достаточно сделать ключ(позицию) и запомнить ее конец в 1 блоке и уже выводить данные во втором блоке начиная с позиции ключа в вашем случае с 13 позиции элемента массива.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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