Циклы в PHP. Циклы Задать шаг в цикле пхп
Операторы цикла используются очень часто в любых языках программирования. Почти все задачи используют циклы, поэтому стоит обратить особое внимание на их изучение. В PHP существуют 4 вида циклов:
- while (префиксная проверка условия);
- do..while (постперфиксная проверка условия);
- for ;
- foreach ;
Первые три цикла похожи на стандартные циклы из языков программирования (С++, Pascal), а последний (foreach) на Perl. Рассмотрим в отдельности первые три операторов цикла, а последний будет рассмотрен в отдельном уроке. Отметим то, что каждый из циклов допускает вложенные циклы, то есть цикл внутри цикла.
Оператор цикла while в PHP
Довольно простой оператор цикла, синтаксис которого очень похож на синтаксис в других языка программирования.
Синтаксис while в PHP:
//может быть сложное логическое условие { операторы; } ?>
В условие стоит некое выражение, которое должно быть либо истинным (true), либо ложным (false). В случае истинного значения условия выполняются операторы, которые стоят в фигурных скобках. После чего опять происходит проверка условия на истинность. Если условие ложное, то программа не входит в цикл. В случае одного оператора фигурные скобки можно опустить.
Примечание : условие может состоять из очень многих выражений с использованием алгебры логики &&, ||, ! и т.д.
Стоит обратить внимание на то, что если в условие есть операторы, то они должны как-то изменяться, иначе цикл просто зациклиться.
Приведу простой пример на использование while :
"; $i++; } ?>
Выше описанный пример выведет следующий результат:
i = 0
i = 1
i = 2
i = 3
i = 4
Обратите внимание, что $i=5 не будет выведено, т.к. i увеличивается в самом конце цикла и поэтому как только он достигнет 5, то условие входа в цикл просто не выполнится.
Оператор break в PHP
Для немедленного прекращения цикла есть специальный оператор break . Данный оператор часто используется для выхода из бесконечного цикла, когда условие всегда истинно. Например, выше описанный пример можно было написать следующим образом:
//условие всегда истинно { echo "i =".$i."
"; $i++; if($i>=5) break; } ?>
Результат будет такой же, как и в предыдущем примере.
Оператор continue в PHP
Оператор continue; прекращает текущую итерацию цикла, перемещаясь в начало, но не прекращает цикл полностью. Например:
//условие всегда истинно { echo "i =".$i."
"; $i++; if($i>=5) break; else continue; } ?>
Результат этого примера будет таким же, как и у предыдущих примеров.
Как показывает практика, операторы continue; и break; зачастую помогают реализовать сложные циклы.
Приведу ещё пример по использованию цикла while :
"; } //результаты этих двух while будут разными //из-за постпрефиксной и префиксной формы $i=0; while (++$i //префиксная форма { echo "i =".$i."
"; } ?>
Оператор цикла do...while в PHP
Оператор do...while очень похож на обычный while . Единственное их отличие во времени проверки условия. Цикл do...while будет выполнен хотя бы один раз, поскольку проверка происходит в самом конце. Синтаксис do...while :
Рассмотрим пример:
"; $i++; } while($i
Его результат аналогичен первым рассмотренным примерам.
Стоит отметить, что операторы continue; и break; также могут применяться в таких циклах.
Оператор цикла for в PHP
Синтаксис оператора for следующий:
В start происходит начальная инициализация переменных. В usloviya должны стоять одно или несколько условий завершения цикла. В shag заносятся операторы, которые выполняются в конце каждой итерации. Например:
"; } ?>
Результат выполнения этого цикла будет таким же как и у предыдущих примеров.
Большим плюсом использования for , что тело цикла может отсутствовать, а все необходимые операции выполнены в разделе shag . Для наглядности приведем пример:
", $i++); ?>
Замечание : в shag недопустимо использование функции echo .
Шаг цикла и условия могут быть самыми разнообразными. Например, можно написать не i++, а i+=5 (инкремент на 5).
Каждый из разделов цикла for может быть опущен, в таком случае получается бесконечный цикл:
for допускает использование continue; и break; .
На последок приведем пример двух эквивалентных конструкций цикла, но один будет for, а другой while
Эквивалентна следующей:
Вряд ли вы сможете написать серьезный сценарий на PHP , не используя циклы. Что такое цикл? Это особый вид управляющей конструкции, позволяющие многократно (и даже бесконечно) выполнять один и тот же код. В PHP поддерживаются следующие циклы:
Первые три цикла вы, скорее всего, сможете встретить в большинстве языков программирования. Циклы, в зависимости от условий, можно прерывать или продолжать (переходить к следующей итерации, не выполняя тело цикла). Давайте рассмотрим подробнее каждый из циклов.
Цикл for
Синтаксис цикла for следующий.
For(инициализация; условие; команды_после_итерации) { тело_цикла; }
В блоке инициализации всегда инициализируется счетчик, а также другие переменные (если необходимо). В блоке условия указывается в какой момент работа цикла должна быть прекращена. В блоке команд, исполняемых после каждого прохождения цикла, обычно меняется значение счетчика, а также и других переменных (если необходимо).
// Массив значений
$array = array("Яблоко",
"Картошка",
"Арбуз",
"Цветок",
"Вода",
"Ртуть",
"Кислород",
"Пшеница",
"Россия",
"Москва",
"Ливень");
// Условие цикла звучит так: пока счетчик не достигнет значения, равного количеству
// элементов массива, тело цикла выполняется
for($i = 0; $i < count($array); $i++) {
print "
".($i + 1).". ".$array[$i].".";
}
/* Результат работы цикла будет таким:
1. Яблоко.
2. Картошка.
3. Арбуз.
4. Цветок.
5. Вода.
6. Ртуть.
7. Кислород.
8. Пшеница.
9. Россия.
10. Москва.
11. Ливень.
*/
Так как счетчик $i начинался с нуля, при каждой итерации мы к его значению прибавляли единицу, чтобы список выглядел более привычным. После каждой итерцации значение счетчика увеличивалось на единицу, и когда оно достигло 11, цикл остановился. Теперь давайте взглянем на цикл do-while.
Цикл do-while
Цикл do-while отличается тем, что он работает по постусловию. Это означает, что код, заключенный в теле цикла, выполнится как минимум один раз. Синтаксис цикла такой:
Do { тело_цикла; } while(условие);
Этот цикл используется довольно редко при веб-программировании , но может он вам и понадобится в ваших сценариях.
// Уже знакомый нам массив
$array = array("Яблоко",
"Картошка",
"Арбуз",
"Цветок",
"Вода",
"Ртуть",
"Кислород",
"Пшеница",
"Россия",
"Москва",
"Ливень");
// Запускаем цикл
$i = 1;
do {
print "
".$i.". ".$array[($i - 1)].".";
} while($i++ < count($array));
/* Результат работы цикла будет таким:
1. Яблоко.
2. Картошка.
3. Арбуз.
4. Цветок.
5. Вода.
6. Ртуть.
7. Кислород.
8. Пшеница.
9. Россия.
10. Москва.
11. Ливень.
*/
Обратите внимание на отличие того, что мы выводим на экран в этом цикле от цикла for . Так как код в теле цикла do-while исполняется как минимум один раз, начальное значение счетчика было задано нулевым. Как работает цикл… выполняется код, затем проверяется условие. При первой итерации счетчик имел значение 1. После итерации единица оказалась меньше 11 (количества элементов). При последней итерации счетчик имел значение 11, а это никак не меньше 11. Цикл остановился. На do-while очень похож цикл while.
Цикл while
Цикл while является предусловным. Он выполнится только тогда, когда его условие истинно. То есть цикл while может и не выполниться вовсе. Его ситаксис таков:
While(условие) { тело_цикла; }
Наряду с циклом for цикл while используется очень часто.
$array = array("Яблоко",
"Картошка",
"Арбуз",
"Цветок",
"Вода",
"Ртуть",
"Кислород",
"Пшеница",
"Россия",
"Москва",
"Ливень");
$i = 1;
while($i++ <= count($array)) {
print "
".$i.". ".$array[($i - 1)].".";
}
/* Результат работы цикла будет таким:
1. Яблоко.
2. Картошка.
3. Арбуз.
4. Цветок.
5. Вода.
6. Ртуть.
7. Кислород.
8. Пшеница.
9. Россия.
10. Москва.
11. Ливень.
*/
Цикл while для начинающих разработчиков наиболее прост и понятен.
Цикл foreach
Цикл foreach не похож на все перечисленные. Он появился в PHP4, предназначен для перебора массивов. Разработчику не нужно ничего выдумывать для этого. Всё легко и просто:
/** * Цикл foreach следует понимать как «для каждого из». * Массив, обрабатываемый циклом, передается переменной, которая * доступна только внутри тела цикла. При желании можно обращаться * и к ключам массива. */ foreach(массив as элемент_массива) { тело_цикла; } foreach(массив as ключ_массива => элемент_массива) { тело_цикла; }
Принцип работы цикла foreach совсем не такой как у циклов for , while и do-while . Поэтому для неопытных разработчиков довольно непросто понять что именно с его помощью можно (и даже нужно) делать.
// Изменим уже знакомый нам массив. Сделаем его ассоциативным.
$array = array("Яблоко" => "фрукт",
"Картошка" => "овощь",
"Арбуз" => "ягода",
"Цветок" => "растение",
"Вода" => "жидкость",
"Ртуть" => "металл",
"Кислород" => "газ",
"Пшеница" => "хлеб",
"Россия" => "наша Родина",
"Москва" => "столица нашей Родины",
"Ливень" => "попадос");
$i = 1;
// Можем сделать так
foreach($array as $v) {
print "
".$i.". ".$v.".";
$i++;
}
/* Получим такой вот неожиданный результат
1. фрукт.
2. овощь.
3. ягода.
4. растение.
5. жидкость.
6. металл.
7. газ.
8. хлеб.
9. наша Родина.
10. столица нашей Родины.
11. попадос.
*/
// А теперь сделаем иначе
foreach($array as $k => $v) {
print "
".$i.". ".$k." — это ".$v.".";
$i++;
}
/* Теперь результат будет таким
1. Яблоко — это фрукт.
2. Картошка — это овощь.
3. Арбуз — это ягода.
4. Цветок — это растение.
5. Вода — это жидкость.
6. Ртуть — это металл.
7. Кислород — это газ.
8. Пшеница — это хлеб.
9. Россия — это наша Родина.
10. Москва — это столица нашей Родины.
11. Ливень — это попадос.
*/
Понимаете как работает этот цикл? Если нет, можете задать вопрос в комментариях к материалу.
В любом цикле можно использовать конструкции break или continue . Иногда не имеет смысл продолжать работу цикла или нужно перейти к следующей итерации.
$array = array("Яблоко" => "фрукт",
"Картошка" => "овощь",
"Арбуз" => "ягода",
"Цветок" => "растение",
"Вода" => "жидкость",
"Ртуть" => "металл",
"Кислород" => "газ",
"Пшеница" => "хлеб",
"Россия" => "наша Родина",
"Москва" => "столица нашей Родины",
"Ливень" => "попадос");
$i = 1;
// Пример работы цикла с конструкцией continue
foreach($array as $k => $v) {
if($k != "Кислород") continue;
print "
".$i.". ".$k." — это ".$v.".";
$i++;
}
/* Результат будет таким
1. Кислород — это газ.
*/
$i = 1;
// Пример работы цикла с конструкцией break
foreach($array as $k => $v) {
if($k == "Кислород") break;
print "
".$i.". ".$k." — это ".$v.".";
$i++;
}
/* Результат будет таким
1. Яблоко — это фрукт.
2. Картошка — это овощь.
3. Арбуз — это ягода.
4. Цветок — это растение.
5. Вода — это жидкость.
6. Ртуть — это металл.
*/
Выполнение однообразных операций всегда напрягает нас в реальной жизни. Например, запечатать 50 конвертов с письмами (согласен, неудачный пример, но суть ясна). А вот в программировании есть такие хорошие конструкции, которые позволяют упросить выполнение повторяющихся операций. Одним из решений будут , которые мы рассмотрели в одном из прошлых уроков. Но также существует и еще несколько вещей, которые позволят упростить нам жизнь — циклы.
Идея цикла заключается в том, чтобы делать что-то снова и снова, пока задача не будет завершена или пока не выполнится определенное условие (заданное). Перед тем, как показать реальный пример где может понадобиться такая конструкция, давайте рассмотрим структуру PHP цикла.
Простой пример цикла While
Суть вайла проста. Он будет выполнять заданный набор команд снова и снова, пока выполняется прописанное условие. Так называемый цикл с предусловием, то есть сначала проверка, потом выполнение. Эта логическая проверка работает так же, как та, которую мы рассматривали в уроке про .
Простой пример while цикла представлен ниже:
While (условие){ //тело цикла; }
Этот код показывает, как построен цикл. Примерный алгоритм выполнения выглядит следующим образом:
- Шаг 1. Проверяется заданное условие цикла. Если оно истинно, то выполняется Шаг 2, если ложно, то Шаг 4.
- Шаг 2. Выполнение тела цикла (заданных команд).
- Шаг 3. Процесс начинается снова (Шаг 1).
- Шаг 4. Если условное выражение ложно, то код внутри цикла не выполняется. Код, записанный после цикла выполняется как обычно.
Очень часто при написании скриптов требуется выполнить одно и тоже действие несколько раз. Для этого и нужны циклы. Циклы в php , как и в других языках, делятся на несколько типов:
- Цикл со счетчиком for
- Цикл с условием while, do-while
- Цикл для обхода массивов foreach
Например, при создании интернет магазина , нам нужно до вывода товаров на экран, убрать товары, остаток на складе которых ниже 10. Для этого мы в цикле обходим массив с товарами, и при помощи условного оператора if, сверяем кол-во товаров на складе, и убираем из массива все товары, у которых значение на складе меньше 10.
Цикл For в PHP
Цикл со счетчиком for - выполняется определенное количество раз. Рассмотрим пример:
"; } ?>
В этом примере цикл будет выполняться 11 раз. От 0 (т.к. переменная $i = 0) до 10 (т.к. $i <= 10). Каждую итерацию $i будет увеличено на 1 ($i++). Чтобы было понятней, сделаем еще один пример:
"; } ?>
Цикл будет выполняться от 5 и до 9 ($i < 10 (в предыдущем примере было <= 10)).
Так же цикл можно выполнять в обратном порядке:
5; $i--) {
echo "Номер итерации: $i
";
}
?>
Цикл будет выполнен от 10 и до 5.
Так же цикл можно выполнять с определенным шагом, рассмотрим пример:
"; } ?>
В цикле будет выполнено 3 итерации (0, 5, 10) с шагом 5. Каждую итерацию, счетчик цикла будет увеличен на 5.
Цикл foreach в PHP
Цикл foreach - самый распространенный цикл. Требуется почти во всех скриптах, особенно если php скрипт работает с базами данных. Используется для обхода массивов.
Например, рассмотрим небольшой пример:
$value) {
echo "Ключ: $key, Значение: $value
";
}
?>
Запустив скрипт вы увидете:
Ключ: 0, Значение: red Ключ: 1, Значение: blue Ключ: 2, Значение: green Ключ: color, Значение: yellow Ключ: test, Значение: дизайн студия ox2.ru
Цикл while в PHP
Цикл while используется для выполнения цикла до тех пор, пока выполняется условие. Если условие ни когда не будет выполнено, то цикл зациклиться.
Рассмотрим пример:
"; } ?>
На экране увидим числа от 1 до 19
Цикл do-while в PHP
Цикл do-while - работает точно так же как и цикл while , единственное отличие что условие выполняется после итерации. Напишем пример:
"; } while ($i < 20); //Выполняем цикл до те пор, пока $i < 20 ?>
На экране увидим числа от 1 до 20. Обратите внимание, что в предыдущем примере с циклом while было от 1 до 19, т.к. условие выполнялось до итерации цикла.
Для того чтобы прервать цикл существует функция break , она позволяет выйти из цикла , не зависимо от того сколько итераций осталось до окончания цикла.
Для того чтобы пропустить итерацию, и перейти к следующей итерации - есть функция continue .
При создании сайтов циклы используются практически всегда, не зависимо от стоимости создания сайта , функционала и других вещей. Поэтому отнеситесь к ним серьезно!
Очень часто при написании скриптов требуется выполнить одно и тоже действие несколько раз. Для этого и нужны циклы. Циклы в php, как и в других языках, делятся на несколько типов: Цикл со счетчиком for Цикл с условием while, do-while Цикл для обхода массивов foreach
OX2 2014-10-02 2014-10-02Всем доброго времени суток. На связи Алексей Гулынин. В прошлой статье мы разобрали ссылки в PHP . В данной статье я бы хотел рассказать о различных циклах в PHP . Всего их существует 4 вида:
- Итерационный цикл for
- Цикл с предусловием
- Цикл с постусловием
- Цикл foreach
Давайте сразу на примерах разберем все циклы. Пусть будет такая задача: необходимо для 10 элементов вывести квадраты числа.
1) Итерационный цикл for
:
"; } ?>
В данном цикле можно использовать несколько условий. Пусть необходимо проверить, если элемент равен 6, то больше ничего не выводить (оператор break пока не знаем). Можно написать так:
"; } ?>
2) Цикл с предусловием :
"; $i++; } ?>
В данном случае также будут выведены квадраты первых 10 чисел. Данный цикл называется циклом с предусловием, потому что проверка условия идёт в начале, в отличие от следующего цикла.
3) Цикл с постусловием :
"; $i++; } while ($i <= 10) ?>
В данном случае проверка условия осуществляется уже после выполнения блока кода, и данный блок кода выполнится 1 раз в любом случае.
4) Цикл foreach
. Данный цикл предназначен для перебора значений массива и появился только в четвертой версии языка PHP. Массив
— это некоторый набор ключей, каждому из которых соответствует некоторое значение. Более подробно массивы будут разбираться в следующих статьях. Рекомендую подписаться на обновления, чтобы не пропустить.
Синтаксис данного цикла следующий:
Foreach (массив as $key=>$value) { блок операторов }
$key представляет собой ключ , $value — значение. Данная конструкция не изменяет исходный массив. Чтобы иметь возможность изменять исходный массив, необходимо использовать ссылочный тип:
Foreach (массив as $key=>&$value) { блок операторов }
Давайте с помощью данного цикла выведем содержимое всех переменных окружения (массив $_SERVER ):
$value) { echo "$key => $value"; } ?>
Обязательно наберите данный пример и посмотрите, как всё работает.
Очень часто возникает ситуация, когда необходимо прервать выполнения цикла. Для этого необходимо использовать конструкцию break . У данной конструкции есть один необязательный параметр. По умолчанию данный параметр равен 1, т.е. мы прерываем выполнение текущего цикла. Давайте разберем такой пример: создадим 2 итерационных цикла от 1 до 5 и, если число будет равно 5, то выведем число. В данном случае, если мы будем использовать просто break , то число 5 будет выведено 5 раз. Если же мы напишем break(2) , то только один раз:
"; break; //запустите скрипт, а затем напишите break(2); } } } ?>
Данный оператор удобно использовать для циклов поиска. Как только мы нашли то, что искали — сразу завершаем цикл.
Оператор continue
, наоборот, пропускает текущую итерацию цикла и переходит уже к следующей. Также в скобках можно указать уровень вложенности цикла.
Пример не буду приводить, дам домашнее задание на этот оператор.


