Эту статью я пишу для новичков, которые только начинают изучать PHP . Расскажу я в этой статье о всевозможных циклах в PHP , так как данной статьи у меня на сайте не было. Были только , но, несмотря на общую схожесть, это всё-таки не то. В PHP есть 4 вида циклов .
Разберём их по порядку и начнём с самого популярного цикла в PHP (да и не только в PHP ) - это цикл FOR . Синтаксис у данного цикла следующий:
For(Выражение_1; Выражение_2; Выражение_3) {
операторы
}
Выражение_1 выполняется сразу же и безоговорочно, Выражение_3 выполняется после каждой итерации цикла. Выражение_2 - это проверка того, нужно ли продолжать цикл. Если результат выражения будет true , то начинается следующая итерация цикла, а если false , то цикл прекращает свою работу.
Следующий тип цикла - это WHILE . Это более простой тип циклов, синтаксис которого следующий:
While(Выражение) {
операторы
}
Пока Выражение возвращает true , цикл будет работать, а как только появится false , он прекращает свою работу.
Цикл DO-WHILE очень похож на WHILE , но с одним отличием. Условие выхода проверяется после выполнения итерации, а не до. Таким образом, данный цикл будет выполняться всегда хотя бы 1 раз. И вот синтаксис цикла DO-WHILE :
Do{
операторы
}while(Условие);
И, наконец, последний тип циклов - это foreach , который служит только для перебора массивов и объектов . Он необходим, когда ключами у массива являются не числа (которые легко перебрать через тот же FOR ), а строки. Синтаксис цикла FOREACH следующий:
Foreach($array_or_object as $key => $value) {
операторы
}
И, наконец, давайте применим все 4 типа циклов в PHP для перебора массивов :
$list = array(5, 2, 3, 10, 12, 10);
$array = array("a" => 1, "x" => 10, "m" => -5);
for ($i = 0; $i < count($list); $i++) {
echo $list[$i]."; ";
}
echo "
";
$i = 0;
while ($i < count($list)) {
echo $list[$i]."; ";
$i++;
}
echo "
";
$i = 0;
do {
echo $list[$i]."; ";
$i++;
}while($i < count($list));
echo "
";
foreach ($array as $key => $value) {
echo "$key = $value; ";
}
?>
Все эти циклы обязан знать наизусть любой программист, поэтому если вдруг что-то непонятно, перечитайте ещё раз, либо задайте вопрос в комментариях, и я постараюсь ответить.
Очень часто при написании скриптов требуется выполнить одно и тоже действие несколько раз. Для этого и нужны циклы. Циклы в php , как и в других языках, делятся на несколько типов:
Например, при создании интернет магазина , нам нужно до вывода товаров на экран, убрать товары, остаток на складе которых ниже 10. Для этого мы в цикле обходим массив с товарами, и при помощи условного оператора if, сверяем кол-во товаров на складе, и убираем из массива все товары, у которых значение на складе меньше 10.
Цикл со счетчиком 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 скрипт работает с базами данных. Используется для обхода массивов.
Например, рассмотрим небольшой пример:
$value) {
echo "Ключ: $key, Значение: $value
";
}
?>
Запустив скрипт вы увидете:
Ключ: 0, Значение: red Ключ: 1, Значение: blue Ключ: 2, Значение: green Ключ: color, Значение: yellow Ключ: test, Значение: дизайн студия ox2.ru
Цикл while используется для выполнения цикла до тех пор, пока выполняется условие. Если условие ни когда не будет выполнено, то цикл зациклиться.
Рассмотрим пример:
"; } ?>
На экране увидим числа от 1 до 19
Цикл 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 предоставляет циклы while , for и foreach .
Синтаксис цикла while :
Пример использования цикла while в PHP :
В примере цикла while в php , приведенном выше, сначала инициализируется переменная счётчика $ i значением 0 .
Условие цикла while – это $ i < 10 . Это означает, что мы проверяем, меньше ли переменная, чем 10.
Всё, что заключено в фигурные скобки – это инструкции (тело ) цикла. Они повторяются до тех пор, пока условие возвращает значение true . В примере, приведенном выше, $ i выводится на экран, а затем переменная счётчика увеличивается на 1. Это важно чтобы условие цикла, в конце концов, перестало соблюдаться. Если условие цикла соблюдается всегда, например, потому что вы забыли увеличить переменную счётчика $ i , тогда скрипт войдёт в бесконечный цикл. К счастью, через некоторое время PHP прекратит выполнение вашего скрипта.
Вы можете сделать как условие цикла, так и тело цикла сколь угодно сложными. Например, использовать while внутри while php, использовать php while для перебора массива ( array ) или определить более одной переменной счётчика:
$min) {
echo "count1: $count1; count2: $count2
";
$ counter1 += 2; // Сокращённое выражение для $counter1 = $counter1 + 2;
$counter2 -= 3; // Сокращённое выражение для $count2 = $count2-3;
}
?>
В примере определяются две переменные: $ counter 1 и $ counter 2 . Одна переменная увеличивается на 2, а другая уменьшается на 3. Цикл while выполняется, пока соблюдаются оба условия $ count 1 < $ max и $ count 2 > $ min .
С помощью команды break можно прервать процесс выполнения цикла while в PHP . Допустим, мы ищем определённого пользователя. Тогда можно пройти по всем пользователям в цикле while . Если найдём нужного пользователя, то остановим цикл с помощью ключевого слова break .
Простой пример использования ключевого слова break :
while ($count < $max) { if ($count == 10) { echo "Останавливаемся на числе 10"; break; } echo "$count,"; $counter += $increment; // увеличивает $count на значение $increment } ?>
Этот код перебирает числа по возрастанию от 0 до $max = 30 , прибавляя к переменной $ count значение $ increment , другими словами число 2. Но если переменная $ count будет равна 10, произойдет выход из цикла while в php .
Ключевое слово continue не завершает цикл while в php полностью , а лишь пропускает оставшуюся часть тела цикла. Приведенный ниже пример демонстрирует это:
while ($count < $max) {
$counter += $increment; // увеличивает $payer на $increment
if ($count >= 10 && $count <= 15) {
echo "Число между 10 и 15
";
continue;
}
echo "$count
";
}
?>
Этот цикл начинается с 0 и увеличивает счётчик до значения $ max . Переменная $ counter всегда увеличивается на значение переменной $ increment . То есть принимает значения 0, 2, 4 и т.д.
Если переменная $ count имеет значение между 10 и 15, на экран будет выведен текст и оператор continue пропустит остальные выражения в теле цикла. В результате мы видим, что числа 10, 12 и 14 не выводятся.
Небольшой модификацией while является цикл do — while . В данном случае условие цикла проверяется только после выполнения его тела. Это значит, что тело цикла выполнится хотя бы один раз.
Синтаксис цикла do-while :
Предположим, что мы хотим сгенерировать случайное число, которое должно быть либо между 0 и 10, либо между 20 и 30. Согласно определению функции rand ($ min , $ max ) , можно случайным образом сгенерировать число между $ min и $ max :
10 && $random < 20) { $random = rand (0, 30); }
echo "Наше случайное число: $random"; ?>
Используя php цикл do — while , можно получить значение выражения без инициализации переменной $ random . Тело цикла выполняется перед тем, как проверяется условие. Тогда пример, приведенный выше, будет выглядеть следующим образом:
10 && $random < 20);
echo " Наше случайное число: $random"; ?>
Новичка цикл do-while может слегка сбить с толку. Если вы до конца не понимаете его цели, то это не проблема. Циклы do-while редко используются на практике.
Синтаксис цикла for выглядит следующим образом:
Данный цикл состоит из ключевого слова for , за которым следуют круглые скобки, содержащие внутри три выражения, разделенных точками с запятой. Он имеет следующий порядок выполнения:
Простой пример цикла for:
На самом деле цикл for является почти универсальным, поскольку он допускает самые разные варианты своего применения.
Каждое из выражений в заголовке цикла for может отсутствовать.
Если инициализация не нужна или происходит в другом месте, инициализирующее выражение не нужно. Перепишем немного предыдущий пример:
Обратите внимание, символ точки с запятой обязателен, так как означает отсутствующее выражение. Отсутствие выражения условия эквивалентно расположению в условии значения TRUE .
В этом случае цикл будет выполняться бесконечно. Если отсутствует инкрементирующее выражение, то оно должно быть в теле цикла иначе цикл будет выполняться бесконечно.
Не стоит забывать о том, что любое из трех выражений или все сразу можно опустить, но разделительные точки с запятой (;) следует ставить всегда.
В заголовке цикла for каждое выражение разделенное точкой с запятой может содержать по несколько выражений, разделенных запятыми. Поэтому можно использовать выражения любой сложности.
"; } ?>
Если в условии выполнения используется несколько выражений, разделенных запятыми, то они вычисляются все, но результат берется из последнего.
Так же как и условные операторы, циклы могут быть вложенными. Простой пример с одним уровнем вложенности:
";
for ($j = 0; $j < 2; $j++) {
echo "Вложенный цикл.
";
}
}
?>
Цикл PHP foreach можно использовать следующим образом:
foreach($array_name as $value){ //код, который должен выполняться }
foreach($array_name as $key =>$value){ // //код, который должен выполняться }
В этом примере мы создадим массив из пяти элементов с числовыми значениями. После этого цикл PHP foreach будет использован для выполнения итерации этого массива. Внутри цикла foreach мы использовали echo , чтобы вывести значения массива:
Посмотреть демо-версию и код
В этом примере описан другой способ использования цикла foreach PHP . Для этого мы создали ассоциативный массив из трех элементов. В него входят имена сотрудников (в качестве ключей ) и суммы заработной платы (в качестве значений ):
Посмотреть демо-версию и код
Также можно c помощью PHP array foreach можно изменять значения элементов массива. Для этого используется «& » перед «$ » для переменной значения. Например:
&$value_of_element
Значение будет изменено. Чтобы вам было понятнее, рассмотрим следующий пример.
В этом примере мы создали числовой массив из пяти элементов. После этого использовали цикл foreach для отображения значений элементов.
Затем создали еще один цикл foreach , где перед $value_of_element добавляется «& «. Внутри фигурных скобок присваиваем новые значения элементам массива.
Чтобы увидеть разницу до и после присвоения новых значений, массив отображается с помощью функции print_r() .
Посмотреть демо-версию и код
Цикл PHP foreach используется для работы с массивом. Он перебирает каждый его элемент.
Также можно использовать для работы с массивами цикл for . Например, используя свойство length , чтобы получить длину массива, а затем применить его в качестве оператора max . Но foreach делает это проще, так как он предназначен для работы с массивами.
Если вы работаете с MySQL , то для этого данный цикл подходит еще больше. Например, можно выбрать несколько строк из таблицы БД и передать их в массив. После этого, используя цикл foreach , перебрать все элементы массива с выполнением какого-либо действия.
Обратите внимание, что можно использовать цикл foreach с массивом или только с объектом.
В PHP существует два способа использования цикла foreach PHP. Оба описаны ниже.
foreach($array_name as $value){ echo $value }
При этом нужно указать имя массива, а затем переменную $value .
Для каждой итерации значение текущего элемента присваивается переменной $value . После завершения итерации переменной присваивается значение следующего элемента. И так до тех пор, пока все элементы массива не будут перебраны.
Это подходит для ассоциативных массивов, в которых используются пары ключ / значение.
Во время выполнения каждой итерации значение текущего элемента будет присвоено переменной $value_of_element. Кроме этого ключ элемента присваивается переменной $key_of_element.
Если вы работаете с числовыми массивами, то можно использовать первый метод, в котором не нужны ключи элементов.
Данная публикация представляет собой перевод статьи «PHP foreach loop 2 ways to use it » , подготовленной дружной командой проекта