Блок – это группа команд, заключённая в фигурные скобки “{” и “}”.
Существует управляющая конструкция “if(uslovie) komandi”, где “uslovie” – условие, представляющее логическое выражение, а “komandi” – команда или блок, выполняющиеся при равенстве условия истине “true”.
Пример 1
1 2 3 4 5 6 7 8 9 10 |
<?php $a = 5; if($a > 7) echo "Больше 7"; if($a < 9) { echo "Меньше 9"; $a = 3; } echo "<br>a = " . $a; ?> |
Данный пример выведет:
Меньше 9
a = 3
Есть управляющая конструкция “if(uslovie) komandi1 else komandi2”, где “uslovie” – условие, “komandi1” – команда или блок, выполняющиеся при равенстве условия истине “true”, “komandi2” – команда или блок, выполняющиеся при равенстве условия лжи “false”.
Пример 2
1 2 3 4 5 |
<?php $a = 5; if($a > 7) echo "Больше 7"; else echo "Меньше или равно 7"; ?> |
Пример выводит “Меньше или равно 7”.
Также существует конструкция “if(uslovie1) komandi1 elseif(uslovie2) komandi2 … elseif(uslovieN) komandiN … else komandiM”, где “uslovie1” … “uslovieN” – условия, при равенстве истине “true” которых, выполняются соответствующие им команды или блоки “komandi1” … “komandiN”, а если ни одно из условий не равно истине “true”, то выполняются команда или блок “komandiM”.
Пример 3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<?php $a = 5; if($a < 2) { echo "Меньше 2"; echo "<br>Условие 1 сработало"; } elseif($a < 4) { echo "Меньше 4"; echo "<br>Условие 2 сработало"; } elseif($a < 6) { echo "Меньше 6"; echo "<br>Условие 3 сработало"; } elseif($a < 8) { echo "Меньше 8"; echo "<br>Условие 4 сработало"; } else { echo "Больше или равно 8"; echo "<br>Условия не сработали"; } ?> |
Пример выводит:
Меньше 6
Условие 3 сработало
Альтернативный синтаксис этой управляющей конструкции выглядит как “if(uslovie1): grupa1 elseif(uslovie2): grupa2 … elseif(uslovieN): grupaN … else: grupaM endif;”, где “uslovie1” … “uslovieN” – условия, при равенстве истине “true” которых, выполняются соответствующие им группы команд “grupa1” … “grupaN”, а если ни одно из условий не равно истине “true”, то выполняется группа команд “grupaM”.
Пример 4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php $a = 5; if($a < 2): echo "Меньше 2"; echo "<br>Условие 1 сработало"; elseif($a < 4): echo "Меньше 4"; echo "<br>Условие 2 сработало"; elseif($a < 6): echo "Меньше 6"; echo "<br>Условие 3 сработало"; elseif($a < 8): echo "Меньше 8"; echo "<br>Условие 4 сработало"; else: echo "Больше или равно 8"; echo "<br>Условия не сработали"; endif; ?> |
Данный пример выводит то, что и предыдущий пример 3.
Существует управляющая конструкция “while(uslovie) komandi”, где “uslovie” – условие, которое пока равно истине “true”, выполняются команда или блок “komandi”.
Пример 5
1 2 3 4 5 6 7 8 |
<?php $cifra = 0; while($cifra < 10) { echo $cifra; $cifra++; } ?> |
Пример выводит “0123456789”.
Для этой конструкции есть альтернативная запись “while(uslovie): grupa endwhile;”, где “uslovie” – условие, которое пока равно истине “true”, выполняется группа команд “grupa”.
Пример 6
1 2 3 4 5 6 7 |
<?php $cifra = 0; while($cifra < 10): echo $cifra; $cifra++; endwhile; ?> |
Данный пример выводит тоже, что и предыдущий пример 5.
Существует конструкция “do komandi while(uslovie);”, где “komandi” – команда или блок, выполняющиеся в начале, а дальше пока условие “uslovie” равно истине “true”.
Пример 7
1 2 3 4 5 6 7 8 9 |
<?php $cifra = 0; do { echo $cifra; $cifra++; } while($cifra < 10); ?> |
Пример выводит тоже, что и предыдущие примеры 5 и 6.
У данной конструкции нет альтернативного синтаксиса.
Есть управляющая конструкция “for(nachalo; uslovie; posle) komandi”, где “nachalo” – выражения через запятую, которые выполняются в начале; “uslovie” – условие, которое пока равно истине “true”, выполняются команда или блок “komandi”; “posle” – выражения, выполняющиеся каждый раз после выполнения “komandi”.
Пример 8
1 2 3 |
<?php for($cifra = 0; $cifra < 10; $cifra++) echo $cifra; ?> |
Пример выводит тоже, что предыдущие 3 примера.
У данной конструкции есть альтернативный синтаксис “for(nachalo; uslovie; posle): grupa endfor;”, где “grupa” – группа команд, а остальное описано выше.
Пример 9
1 2 3 4 5 |
<?php for($cifra = 0; $cifra < 10; $cifra++): echo $cifra; endfor; ?> |
Пример выводит тоже, что и предыдущие 4 примера.
Существует конструкция “foreach($a as $v) komandi”, где “$a” – массив; “$v” – текущее значение массива, которое используется в команде или блоке “komandi”.
Пример 10
1 2 3 4 5 6 7 8 9 10 |
<?php $a = [1, 4, 2, 7, 9]; $sum = 0; foreach($a as $v) { echo $v; $sum += $v; } echo "<br>Сумма: " . $sum; ?> |
Данный пример выводит:
14279
Сумма: 23
Также существует разновидность этой конструкции “foreach($a as $k => $v) komandi”, где “$a” – массив; “$k” и “$v” – текущие индекс и значение массива, которые используются в команде или блоке “komandi”.
Пример 11
1 2 3 4 |
<?php $a = ["Белый" => 3, 4 => "Чёрный", "Зелёный" => "Красный", 9 => 7.5]; foreach($a as $k => $v) echo $k . ": " . $v . "<br>"; ?> |
Данный пример выводит:
Белый: 3
4: Чёрный
Зелёный: Красный
9: 7.5
Есть альтернативный синтаксис этой конструкции “foreach($a as $k => $v): grupa endforeach;”, где “$a” – массив; “$k” и “$v” – текущие индекс и значение массива, которые используются в группе команд “grupa”.
Пример 12
1 2 3 4 5 6 |
<?php $a = ["Белый" => 3, 4 => "Чёрный", "Зелёный" => "Красный", 9 => 7.5]; foreach($a as $k => $v): echo $k . ": " . $v . "<br>"; endforeach; ?> |
Данный пример выводит тоже, что и предыдущий пример 11.
Управляющие конструкции “while”, “do while”, “for” и “foreach” называются циклами потому, что в них команды выполняются циклически. Существуют команды “break”, которая позволяет выйти из текущего цикла, и “continue”, которая пропускает текущее выполнение команд и переходит к следующему выполнению цикла.
Пример 13
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php for($i = 1; $i <= 10; $i++) { if($i > 5) break; echo $i; } echo "<br>"; $i = 0; while($i < 10) { $i++; if($i % 2 == 0) continue; echo $i; } ?> |
Данный пример выводит:
12345
13579
Есть конструкция “switch(per){case znach1: grupa1; break; case znach2: grupa2; break; … case znachN: grupaN; break; default: grupaM }”, где “per” – числовая или строковая переменная; “grupa1” … “grupaN” – группы команд, которые выполняются при равенстве переменной “per” соответствующим значениям “znach1” … “znachN”; “grupaM” – группа команд, которая выполняется, если переменная “per” не равна ни одному из этих значений.
Пример 14
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?php $stroka = "Зелёный"; switch($stroka) { case "Белый": echo "Белый цвет"; break; case "Чёрный": echo "Чёрный цвет"; break; case "Зелёный": echo "Зелёный цвет"; break; case "Красный": echo "Красный цвет"; break; default: echo "Цвет не определён"; break; } ?> |
Этот пример выводит “Зелёный цвет”.