foreach for do-while
do-while
Цикл do-while похож на цикл while, что истинность выражения проверяется в конце итерации, а не в начале, это значит, что выражение будет гарантировано выполнено хотя 1 раз
<?php
$i = 0;
do {
echo $i;
} while ($i > 0);
?<
for
for (expr1; expr2; expr3)
expr1 выполняется только один раз в начале цикла
expr2 оценивается в начале каждой итерации, если true тогда цикл продолжается
expr3 выполняется в конце каждой итерации
Каждое из выражений может быть пустым или содержать несколько выражений, разделённых запятыми.
В expr2 все выражения, разделённые запятыми, вычисляются, но результат берётся из последнего.
Если выражение expr2 отсутствует, это означает, что цикл будет выполняться бесконечно.
Источник: https://www.php.net/manual/ru/control-structures.for.php
#Выполнение цикла без выражения expr2
for($i = 10; ; $i--) {
echo "$i<br>";
if($i < 0)
break;
}
#То же самое без выражений
$i=10;
for(; ;) {
echo "$i<br>";
if($i < 0)
break;
$i--;
}
#Выполнение цикла без тела
for($i = 10, $j = 1; $i < 20; $i += $j, print $i . "<br>");
foreach
foreach работает только с массивами и объектами
Существует два типа синтаксиса:
foreach (iterable_expression as $value) statement foreach (iterable_expression as $key => $value) statementВ первой форме На каждой итерации значение текущего элемента присваивается переменной $value
Вторая форма дополнительно будет присваивать ключ текущего элемента переменной $key
Чтобы изменять элементы массива внутри цикла, перед переменной $value указывается знак &, после чего значение можно изменить по ссылке
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
}
var_dump($arr);
unset($value); #Разорвать ссылку на последний элемент
Ключ и значение
$a = array(
"one" => 1,
"two" => 2,
"three" => 3,
"seventeen" => 17
);
foreach ($a as $k => $v) {
echo "\$a[$k] => $v.\n";
}
Многомерные массивы
$a = array();
$a[0][0] = "a";
$a[0][1] = "b";
$a[1][0] = "y";
$a[1][1] = "z";
foreach ($a as $v1) {
foreach ($v1 as $v2) {
echo "$v2\n";
}
}
Распаковка вложенных массивов конструкцией list
$array = [
[1, 2],
[3, 4],
];
foreach ($array as list($a, $b)) {
// Переменная $a содержит первый элемент вложенного массива,
// а переменная $b — второй.
echo "A: $a; B: $b\n";
}
Источник: https://www.php.net/manual/ru/control-structures.foreach.php
break
break прерывает выполнение текущей структуры for, foreach, while, do-while или switch
break принимает аргумент, который сообщает ему выполнение какого количества вложенных структур необходимо прервать, значение по умолчанию 1
$i = 0;
while(++$i){
echo $i . " <br>";
switch($i){
case 5: echo "Цикл 5, выход из switch<br>";
break 1;
case 10: echo "Цикл 10, выход из while<br>";
break 2;
default: break;
}
}
1
2
3
4
5
Цикл 5, выход из switch
6
7
8
9
10
Цикл 10, выход из while
#######################################
$arr_test = array(1, 2, 3, 4, 5, 'stop');
foreach($arr_test as $elem){
echo $elem . "
";
if($elem == "stop")
break;
}
1
2
3
4
5
stop
Continue
Continue используется для пропуска выполнения оставшийся части итерации после ключевого слова continue
#Продолжить выполнение цикла, только если число нечетное
$arr = ['ноль', 'один', 'два', 'три', 'четыре', 'пять', 'шесть'];
foreach($arr as $key => $value){
echo "Начало выполнения итерации " . $key . "
";
if(($key % 2)==0){
continue;
}
echo "Конец выполнения итерации " . $key . " значение " . $value."
";