- PHP от А до Я. Цикл for
- Похожие записи
- Php сокращенная форма for
- Цикл for — Основы PHP
- Синтаксический сахар
- Инкремент и декремент
- Дополнительные материалы
- Остались вопросы? Задайте их в разделе «Обсуждение»
- Открыть доступ
- Использование циклов в PHP
- Foreach – перебор массива
- Результат:
- Альтернативный синтаксис foreach
- For – цикл с счетчиком
- Результат:
- Альтернативный синтаксис
- Результат:
- Альтернативный синтаксис for
- While – цикл с предусловием
- Результат:
- Альтернативный синтаксис while
- Do-while – цикл с постусловием
- Результат:
- Управление циклами
- Break
- Continue
- Результат:
- Php сокращенная форма for
PHP от А до Я. Цикл for
Привет. На этот раз я хотел бы поговорить о цикле for.
Сегодня я расскажу Вам для чего нужны циклы. Циклы служат для многократного выполнения одного и того-же кода, пока не наступит условие выхода из этого самого цикла.
Конструкция цикла for на php будет выглядеть следующим образом:
for (Начальное значение [;] Условие выхода из цикла [;] Действие по окончании цикла)
Теперь рассмотрим пример уже написанный на php
В результате получим строчку «1 -й проход по циклу!2 -й проход по циклу!3 -й проход по циклу!4 -й проход по циклу!5 -й проход по циклу!6 -й проход по циклу!7 -й проход по циклу!8 -й проход по циклу!9 -й проход по циклу!»
Хорошо. Теперь еще немного усложним задачу. используем конструкции из прошлых уроков:
'."$i -й проход по циклу!".''; > else < echo ''."$i -й проход по циклу!".''; > echo " < br >"; > ?>
Соответственно получиться что каждый проход будет выводиться на новой строке, а фраза «$i -й проход по циклу!» от 1 до 4-х будет красным цветом, в противном случае зеленым.
Рассмотрим еще одну ситуацию
Последний пример нам выводит «01236789». Когда $i принимает значение 4 или 5, то мы переходим на следующий круг цикла, минуя вывод сообщения, а когда $i равно 10 происходит выход из цикла. Обратите внимание, что в данном случае не задано условие выхода из цикла, а мы его сами обрабатываем. Представьте что $i может никогда не стать равным 10, это абсурдно . Но никогда не говори никогда.
Придумайте себе примеры и поэкспериментируйте.
Если у Вас Возникли вопросы или что-то не получилось, то мы Вас ждем на нашем форуме технической поддержки — Service Desk УМВР, Ждем Ваших отзывов и предложений, а так-же вопросов и пожеланий!
Похожие записи
Php сокращенная форма for
PHP предлагает альтернативный синтаксис для некоторых его управляющих структур, а именно: if , while , for , foreach и switch . В каждом случае основной формой альтернативного синтаксиса является изменение открывающей фигурной скобки на двоеточие (:), а закрывающей скобки на endif; , endwhile; , endfor; , endforeach; или endswitch; соответственно.
В приведённом выше примере, блок HTML «A равно 5» вложен внутрь структуры if , написанной с альтернативным синтаксисом. Блок HTML будет показан только если переменная $a равна 5.
Альтернативный синтаксис также применяется и к else и elseif . Ниже приведена структура if с elseif и else в альтернативном формате:
if ( $a == 5 ):
echo «a равно 5» ;
echo «. » ;
elseif ( $a == 6 ):
echo «a равно 6» ;
echo «. » ;
else:
echo «a не равно ни 5 ни 6» ;
endif;
?>?php
Замечание:
Смешивание синтаксиса в одном и том же блоке управления не поддерживается.
Любой вывод (включая пробельные символы) между выражением switch и первым case приведут к синтаксической ошибке. Например, данный код не будет работать:
В то же время следующий пример будет работать, так как завершающий перевод строки после выражения switch считается частью закрывающего ?> и следовательно ничего не выводится между switch и case :
Смотрите также while, for и if для дальнейших примеров.
Цикл for — Основы PHP
Цикл while идеален для ситуаций, когда количество итераций неизвестно заранее — например, при поиске простого числа. Когда количество итераций известно, предпочтительнее использовать цикл for . Именно его мы изучим в этом уроке.
Посмотрим реализацию переворота строки через цикл for :
function reverseString($str) $result = ''; for ($i = 0; $i strlen($str); $i += 1) $currentChar = $str[$i]; $result = "$currentChar>$result>"; > return $result; >
Этот код можно прочитать так:
Посмотрим, что находится в круглых скобках:
- Начальное значение счетчика — этот код выполняется ровно один раз перед первой итерацией
- Предикат (условие повторения циклов) — выполняется на каждой итерации, как и в while
- Описание изменения счетчика — этот код выполняется в конце каждой итерации
В остальном принцип работы точно такой же, как у цикла while .
Синтаксический сахар
В функции выше мы использовали новую синтаксическую конструкцию $i += 1 . Подобные конструкции в PHP используются довольно часто. Это сокращенный вариант записи: $i = $i + 1 .
Такие сокращения называют синтаксическим сахаром, потому что они делают процесс написания кода немного проще и приятнее — «подслащивают» его.
Важно понимать, что отличия исключительно в способе записи. Интерпретатор превращает сокращенную конструкцию в развернутую.
Существуют сокращенные формы для всех арифметических операций и для конкатенации строк:
- $a = $a + 1 то же самое, что и $a += 1
- $a = $a — 1 то же самое, что и $a -= 1
- $a = $a * 2 то же самое, что и $a *= 2
- $a = $a / 1 то же самое, что и $a /= 1
- $a = $a . ‘bla’ то же самое, что и $a .= ‘bla’
Инкремент и декремент
Из языка Си в PHP перекочевали две операции:
Они очень часто встречаются вместе с циклами. Эти унарные операции увеличивают и уменьшают на единицу число, записанное в переменную:
При использовании префиксной формы все происходит наоборот. Сначала идет изменение переменной, а затем — возврат нового значения:
Кажется, что нет никакой разницы между постфиксной и префиксной формами. Но тут начинаются сложности. Все остальные операции не имеют побочных эффектов и просто возвращают новое значение. В отличие от них, инкремент и декремент не только возвращают значение, но и изменяют значение переменной.
При использовании префиксной нотации сначала происходит изменение переменной, а потом — возврат. При использовании постфиксной нотации — наоборот: сначала возврат, а потом изменение переменной.
Правило работает одинаково для инкремента и декремента. Для простоты рассмотрим только инкремент:
$x = 5; echo ++$x; // => 6 echo $x; // => 6 echo $x++; // => 6 echo $x; // => 7
Обсудим, что пошагово происходит в коде:
- Вывели на экран ++$x — это префиксный инкремент, поэтому сначала значение переменной увеличилось на 1, потом результат вернулся и вывелся на экран
- Значение изменилось, поэтому echo $x вывел 6
- Теперь выводим на экран $x++ — это постфиксный инкремент, поэтому сначала значение вернулось и вывелось на экран, а потом переменная увеличилась на 1
- Значение изменилось, поэтому echo $x вывел 7
Инкремент и декремент могут заметно усложнить код. Особенно сложно все становится, когда мы вставляем инкремент внутрь других операций: $x = $i++ — 7 + —$h .
Понять такой код невозможно, поэтому лучше не использовать такие конструкции. Например, в языке JavaScript при проверке кода линтер сразу начинает ругаться, когда видит использование инкремента и декремента.
Мы советуем пользоваться этими конструкциями так:
- В рамках одного выражения никогда не смешивайте функции без побочных эффектов с функциями с побочными эффектами (то же самое касается операций)
- Используйте инкремент и декремент только там, где нет разницы между префиксным и постфиксным вариантом: отдельно от всего, на своей собственной строчке кода
Дополнительные материалы
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Об обучении на Хекслете
Открыть доступ
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
- 130 курсов, 2000+ часов теории
- 1000 практических заданий в браузере
- 360 000 студентов
Наши выпускники работают в компаниях:
Использование циклов в PHP
PHP имеет четыре вида циклов и операторы управления ими, рассмотрим поподробнее.
Foreach – перебор массива
Предназначен для перебора элементов массива.
$array = array( 1 => 'Значение 1', 2 => 'Значение 2', 3 => 'Значение 3', 4 => 'Значение 4', ); // Вывод ключей foreach ($array as $key => $val) < echo $key . '
'; > // Вывод значений foreach ($array as $key => $val) < echo $val . '
'; >
Результат:
1 2 3 4 Значение 1 Значение 2 Значение 3 Значение 4
Альтернативный синтаксис foreach
For – цикл с счетчиком
Цикл работает пока выполняется заданное условие. Обычно применяется в качестве счетчика.
// Счетчик от 0 до 5 for ($n = 0; $n // Счетчик от 5 до 0 for ($n = 5; $n >= 0; $n--)
Результат:
Альтернативный синтаксис
$array = array( 'Значение 1', 'Значение 2', 'Значение 3', 'Значение 4', ); for ($n = 0; $n < count($array); $n++) < echo $array[$n] . '
'; >
Результат:
Значение 1 Значение 2 Значение 3 Значение 4
Альтернативный синтаксис for
While – цикл с предусловием
Т.е. если перед началом итерации условие выполняется, то цикл продолжает свою работу.
Результат:
Альтернативный синтаксис while
Do-while – цикл с постусловием
В отличии от while этот цикл проверяет выполнения условия после каждой итерации. Do-while не имеет альтернативного синтаксиса.
Результат:
Управление циклами
Break
Вызов break или break 1 в цикле останавливает его.
Для вложенных циклов используется break 2 и т.д.
Continue
Используется для пропуска итерации.
Результат:
Для вложенных циклов по аналогии с break 2 , break 3 – continue 2 , continue 3 .
Php сокращенная форма for
Цикл for самый сложный цикл в PHP. Он ведёт себя так же, как и в языке C. Синтаксис цикла for следующий:
for (expr1; expr2; expr3) statement
Первое выражение ( expr1 ) всегда вычисляется (выполняется) только один раз в начале цикла.
В начале каждой итерации оценивается выражение expr2 . Если оно принимает значение true , то цикл продолжается и выполняются вложенные операторы. Если оно принимает значение false , выполнение цикла заканчивается.
В конце каждой итерации выражение expr3 вычисляется (выполняется).
Каждое из выражений может быть пустым или содержать несколько выражений, разделённых запятыми. В expr2 все выражения, разделённые запятыми, вычисляются, но результат берётся из последнего. Если выражение expr2 отсутствует, это означает, что цикл будет выполняться бесконечно. (PHP неявно воспринимает это значение как true , так же, как в языке C). Это может быть не так бесполезно, как вы могли подумать, так как часто необходимо прервать цикл, используя условный оператор break вместо использования выражения в цикле for , которое принимает истинное значение.
Рассмотрим следующие примеры. Все они отображают числа от 1 до 10:
for ( $i = 1 ; ; $i ++) if ( $i > 10 ) break;
>
echo $i ;
>
Конечно, первый пример кажется самым хорошим (или, возможно, четвёртый), но вы можете обнаружить, что возможность использовать пустые выражения в циклах for может стать удобной во многих случаях.
PHP также поддерживает альтернативный синтаксис с двоеточием для циклов for .
for (expr1; expr2; expr3): statement . endfor;
Перебор массивов как показано ниже — это обычное дело для многих пользователей.
/*
* Это массив с некоторыми данными, которые мы хотим изменить
* при работе цикла.
*/
$people = array(
array( ‘name’ => ‘Kalle’ , ‘salt’ => 856412 ),
array( ‘name’ => ‘Pierre’ , ‘salt’ => 215863 )
);
?php
for( $i = 0 ; $i < count ( $people ); ++ $i ) $people [ $i ][ 'salt' ] = mt_rand ( 000000 , 999999 );
>
?>
Вышеприведённый код может работать медленно, так как размер массива вычисляется в каждой итерации. Поскольку размер не меняется, цикл может быть легко оптимизирован с помощью промежуточной переменной, в которую будет записан размер массива, вместо повторяющихся вызовов функции count() :
$people = array(
array( ‘name’ => ‘Kalle’ , ‘salt’ => 856412 ),
array( ‘name’ => ‘Pierre’ , ‘salt’ => 215863 )
);
?php
for( $i = 0 , $size = count ( $people ); $i < $size ; ++ $i ) $people [ $i ][ 'salt' ] = mt_rand ( 000000 , 999999 );
>
?>