Имеем простой код:
$array = array('a', 'b', 'c', 'd');
foreach($array as $k => $v) {
if($v == 'c') {
return current($array);
}
}
//Вывод: d
Почему выводится значение из следующей итерации, а не из текущей? Ведь по логике мы не переходили к следующей итерации, а завершаем скрипт! В документации php нет примеров этой функции с использованием циклов.
В документации к foreach четко написано
перебирает массив, задаваемый с помощью array_expression. На каждой итерации значение текущего элемента присваивается переменной $value и внутренний указатель массива увеличивается на единицу (таким образом, на следующей итерации цикла работа будет происходить со следующим элементом).
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости