Цикл foreach()
в PHP используется для прохождения в цикле по блоку кода для каждого элемента массива. В этой статье мы разберемся, как использовать цикл foreach() и как получить первый и последний элементы массива.
Contents
Синтаксис PHP foreach()
Цикл foreach()
в основном используется для итерации по каждому значению массива.
Пример цикла foreach()
:
foreach($array as $key => $value){
// Код пишем сюда
}
Значения параметров foreach()
:
$array
– это должен быть корректный массив для использования в цикле; если переданный массив не корректен или является строкой, возвращается ошибка вида: (Warning: Invalid argument supplied for foreach())$key
– это ключ элемента на каждой итерации$value
– значение элемента на каждой итерации
Получаем первый и последний элемент в цикле foreach() в PHP
Существует несколько подходов к получению первого и последнего элемента в цикле с помощью PHP, и они различаются для разных версий языка.
Первый – это использование счетчика (работает для всех версий PHP), второй – использование функций array_key_first()
и array_key_last()
для версии PHP 7.3 и старше.
Использование счетчика в цикле foreach
Добавление целочисленной переменной и размещение счетчика в нижней части цикла foreach().
Пример:
$array = array("dog", "rabbit", "horse", "rat", "cat");
$x = 1;
$length = count($array);
foreach($array as $animal){
if($x === 1){
//first item
echo $animal; // output: dog
}else if($x === $length){
echo $animal; // output: cat
}
$x++;
}
В приведенном выше примере список животных хранится в виде массива $array
.
Затем устанавливаем $x
равным 1, чтобы запустить счетчик.
Используем функцию count()
для определения общей длины массива. Итерация счетчика была размещена в нижней части цикла foreach() для выполнения условия получения первого элемента и выглядит так: $x++;
.
Чтобы получить последний элемент, проверьте, равен ли $x
общей длине массива. Если это так, то будет получен последний элемент.
Использование array_key_first() и array_key_last() в цикле PHP
В последних версиях PHP получение первого и последнего элемента в массиве может быть как никогда эффективным.
Пример:
$array = array("dog", "rabbit", "horse", "rat", "cat");
foreach($array as $index => $animal) {
if ($index === array_key_first($array))
echo $animal; // output: dog
if ($index === array_key_last($array))
echo $animal; // output: cat
}
В приведенном выше примере array_key_first()
получает ключ первого элемента массива, в данном случае это 0.
Затем array_key_last()
получает последний ключ массива, в данном случае 5.
Если просмотреть массив, то элемент, который находится в ключе 0, – это собака, которая является первой, а в ключе 5 – это кошка, которая является последним элементом.
Изменение последнего элемента массива get_the_terms в WordPress
В WordPress бывают ситуации когда нужно определить последний элемент массива get_the_terms
. Например, если нам надо перебрать все таксономии и после каждой таксономии поставить запятую. Но нам нужна запятая во всех кроме последней таксономии.
Способы, которые были показаны выше можно объединить и получим следующий сниппет для нашего случая:
<?php
$cur_terms = get_the_terms( $post->ID, 'types' );
$x = 0;
if( is_array( $cur_terms ) ){
foreach( $cur_terms as $cur_term ){
if ($x === array_key_last($cur_terms)) {
echo '<a href="'. get_term_link( $cur_term->term_id, $cur_term->taxonomy ) .'">'. $cur_term->name .'</a>' . '';
} else {
echo '<a href="'. get_term_link( $cur_term->term_id, $cur_term->taxonomy ) .'">'. $cur_term->name .'</a>' . ', ';
}
$x++;
}
}
Важно, что get_the_terms
возвращает массив объектов. По этой причине мы используем счетчик и сравниваем его с array_key_last()
.
В примере выше видно, что если счетчик равен array_key_last()
, то запятая после таксономии не ставится.