Как исключить первый элемент из массива foreach
Как исключить первый элемент из массива?
<?php foreach($products as $product) { ?>
<div></div>
<?php } ?>
Ответы (5 шт):
- Погуглил за вас.
- Мой вариант (если это шаблон):
<?php $first_itaration = true; ?>
<?php foreach($products as $product): ?>
<?php if($first_itaration): ?>
<?php $first_itaration = false; ?>
<?php continue; ?>
<?php endif; ?>
<div></div>
<?endforeach;?>
- Комментарий к документации.
- Документация по continue.
- Как удалить первый элемент массива.
Я бы не пропускал итерацию, а просто удалял бы первый элемент. Код был бы чище.
UPD А ещё лучше, не заносил бы не нужные данные.
<?php foreach($products as $key => $product) {
if($key == 0){continue;}?>
<div></div>
<?php } ?>`
Как вариант. На крайний случай можно добавить счетчик
Если задача заключаеться именно в том, чтобы исключить первый элемент.
Если вы используете php версии 7.3 и выше,
то можно воспользоваться функцией array_key_first.
https://www.php.net/manual/ru/function.array-key-first.php
Данная функция получает первый ключ массива.
<?php
$array = [...];
$firstKey = array_key_first($array);
unset($array[$firstKey]);
Если же, вы пользуетесь версией php ниже, чем 7.3,
тогда, можно взять пример полифилла из документации.
<?php
if (!function_exists('array_key_first'))
{
function array_key_first(array $arr)
{
foreach($arr as $key => $unused)
{
return $key;
}
return null;
}
}
Можно использовать функцию array_slice, чтобы получить часть массива без первого элемента:
<?php foreach (array_slice($products, 1) as $product): ?>
<div></div>
<?php endforeach; ?>
<?php $i = 0; foreach($products as $product) { if ($i > 0) { ?>
<div></div>
<?php } $i++; } ?>