Определяем первый и последний элемент в цикле foreach

Цикл foreach() в PHP используется для прохождения в цикле по блоку кода для каждого элемента массива. Разберемся как использовать цикл foreach() и как получить первый и последний элементы массива.

Синтаксис 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(), то запятая после таксономии не ставится.

Была ли эта страница полезной?