Условия и циклы в PHP
Условия в PHP позволяют сравнивать переменные, а циклы выполнять похожую операцию много раз.
Очень часто используется тернарный оператор:
$str = $a > $b ? 'вывод исли $a больше $b' : 'вывод если $a меньше или равно $b';
echo $str;
* в скобках после ? - если условие tru, в скобках после : - если false.
Самое простое условие: если в круглых скобках истина то выведет то что в фигурных, если ложь то пропустит и будет выполнять код дальше.
//Вывести - Ты подросток если переменная age меньше 15:
if($age < 15) echo "Ты подросток";
Немного усложняемся: если в круглых скобках истина то выведет первое условие, а если ложь то второе после else:
//выведет 20 - наибольшее из двух значений:
<?php
$x = 10;
$y = 20;
if ($x >= $y) echo "$x";
else echo "$y";
?>
если первая и второя инструкция состоит из нескольких страниц то уже нужны фигурные скобки.
Можно использовать знак && чтобы искать значение переменной age между 13 и 19.
если в первых фигурных скобках ложь, проверяется второе условие на истину- если здесь правда - выводим вторые фигурные скобки.
<?php
$age = 21;
if ($age<=13) {echo "Child.";}
elseif ($age>13 && $age<19) {echo "Teenager";}
else {echo "Adult";}
?>
Цикл while
Цикл while выполняет блок кода пока указаное в скобках условие - ВЕРНОЕ!
Если условие никогда не становится ложным, то выражение будет бесконечным!
$i = 1;
while ($i <= 10) {
echo $i++;
}
выведет: - 12345678910
С помощью циклов можно работать и со строками:
<?php
function printNameBySymbol($name)
{
$i = 0;
// Такая проверка будет выполняться до конца строки
// включая последний символ. Его индекс `длина строки - 1`.
while ($i < strlen($name)) {
// Обращаемся к символу по индексу
print_r("$name[$i]\n");
$i = $i + 1;
}
}
$name = 'Arya';
printNameBySymbol($name);
// => 'A'
// => 'r'
// => 'y'
// => 'a'
Условие в while можно сделать сразу двумя способами: $i < strlen($name) или $i <= strlen($name) - 1. Оба приведут к одному результату.
Цикл do while
Цикл do while выполняет блок коди минимум 1 раз, проверяет условие, и повторяет цикл пок условие верное.
код всегда будет выполнен 1 раз!
<?php
$i = 0;
do {
echo $i;
} while ($i > 0);
?>
// даже здесь цикл выполнится 1 раз.
Цикл for
Цикл for используется тогда, когда вы заранее знаете, сколько раз должен запуститься скрипт.
init: Инициализирует значение счетчика цикла
test: Вычисляется при каждой итерации цикла, продолжая выполнение, если условие верно, и останавливаясь, если условие ложно
increment: Увеличивает значение счетчика цикл
for (init; test; increment) {
code to be executed;
}
//=========
<?php
for ($a = 0; $a < 6; $a++) {
echo "Value of a : ". $a . "<br />";
}
?>
Цикл for в примере выше сначала устанавливает переменную $a равной 0, затем проверяет условие ($a < 6). Если условие верно, то запускается код. После этого происходит инкрементирование переменной $a ($a++).
Цикл foreach
Цикл foreach работает только с массивами, и используется для прохождения по каждой паре ключ/значение в массиве.
foreach (array as $value) {
code to be executed;
}
// здесь скрипт циклично проходит по массиву. На каждой итерации значение текущего элемента присваивается к переменной $value, а указатель массива смещается на единицу, пока не достигнет последнего элемента массива.
foreach (array as $key => $value) {
code to be executed;
}
// Здесь при каждой итерации будет дополнительно присваивать текущий ключ элемента к переменной $key.
<?php
$names = array("John", "David", "Amy");
foreach ($names as $name) {
echo $name.'<br />';
}
?>
// Выведет каждую позицию с новой строки
//John
//David
//Amy
Оператор switch:
switch немедленно отправляется к соответствующему case, и прекращает оценивать все другие условия, которые потребуются в цепочке if-else.
<?php
$today = 'Tue';
switch ($today) {
case "Mon":
echo "Today is Monday.";
break;
case "Tue":
echo "Today is Tuesday.";
break;
case "Wed":
echo "Today is Wednesday.";
break;
case "Thu":
echo "Today is Thursday.";
break;
case "Fri":
echo "Today is Friday.";
break;
case "Sat":
echo "Today is Saturday.";
break;
case "Sun":
echo "Today is Sunday.";
break;
default:
echo "Invalid day.";
}
?>
Ключевое слово break, которое следует за каждым case, используется для предотвращения автоматического перехода в следующий сектор case. Если вы забудете указать выражение break;, то PHP автоматически продолжит выполняться через последующие выражения case, даже если они не соответствуют выражению.
Как вернуть switch из функции - смотреть
В чем разница между switch и elseif?
В операторе switch выражение вычисляется один раз и этот результат сравнивается с каждым оператором case. В выражении elseif, выражение вычисляется снова. Если ваше условие более сложное, чем простое сравнение и/или находится в цикле, конструкция switch работает быстрее. Используем switch когда много условий!
Оператор break
Оператор break заканчивает текущий for, foreach, while, do-while или switch и продолжает выполнять программу со строки, расположенной сразу после цикла.
Оператор break во внешней части программы (т.е., не в управляющем цикле) остановит скрипт.
<?php
$x=1;
switch ($x) {
case 1:
echo "One";
case 2:
echo "Two";
case 3:
echo "Three";
default:
echo "No match";
}
?>
//Выведет: OneTwoThreeNo match
* Если оператор break отсутствует, то код продолжает выполняться.
Оператор continue
При использовании внутри структуры цикла, оператор continue позволяет пропустить то,
что осталось от текущей итерации цикла и перейти к следующей. Затем выполнение продолжается с подсчета условия и происходит переход к началу следующей итерации.
Следующий пример пропускает четные числа в цикле for:
<?php
for ($i=0; $i<10; $i++) {
if ($i%2==0) {
continue;
}
echo $i . ' ';
}
?>
//Выведет: 1 3 5 7 9
Вы можете использовать оператор continue со всеми цикличными структурами.
в 8 версии PHP появылось выражение - match:
<?php
$food = 'cake';
$return_value = match ($food) {
'apple' => 'На столе лежит яблоко',
'banana' => 'На столе лежит банан',
'cake' => 'На столе стоит торт',
};
var_dump($return_value);
?>
//Результат выполнения данного примера:
//string(35) "На столе стоит торт"
ДОкуметация на офиц сайте - смотреть