Цикл FOREACH:
<?php
$students = [];
//присвоение значений
$students[0] = "david";
$students[1] = "kevin";
$students[2] = "julie";
$students[3] = "nayyar";
/*
теперь мы используем цикл foreach, чтобы вывести массив значений
*/
foreach( $studentsas $std_name ) {
echo $std_name . "n";
}
// результат:
david
kevin
julie
nayyar
?>
Если вы хотите считать имя индекса и его значение для каждого элемента массива, используйте цикл FOREACH следующим образом:
<?php
foreach ($array as $key => $val) {
print "$key = $valn";
}
?>
Ещё пример:
<?php
$данные = array (
"Иванов" => array ("рост" => 174, "вес" => 68),
"Петров" => array ("рост" => 181, "вес" => 90),
"Сидоров" => array ("рост" => 166, "вес" => 73));
foreach ($данные as $фамилия => $данные1)
{
echo "<br>$фамилия:<br>";
foreach ($данные1 as $параметр => $pp)
{
echo "$параметр = $pp<br>";
}
}
?>
результат:
Иванов: рост = 174 вес = 68 Петров: рост = 181 вес = 90 Сидоров: рост = 166 вес = 73
Обработка массива циклом FOR:
<?php
for ($i = 0; $i <count($array); ++$i) {
print $array[$i];
}
?>
запустим цикл в обратном порядке:
<?php
$userNames = ['petya', 'vasya', 'evgeny'];
for ($i = count($userNames) - 1; $i >= 0; $i--) {
print_r("{$userNames[$i]}\n");
}
но это не работает для ассоциативных массивов.
Обработка массивов с помощью функции list():
<?php
while (list($var, $val) = each($array)) {
print "$var is $valn";
}
?>
List() — это функция, которая противоположна функции array().
Each() принимает массив в качестве параметра, возвращает текущий ключ и значение в этом массиве,
прежде чем переместить курсор массива.
«Курсора массива» — это технический термин, обозначающий элемент массива,
который в настоящее время считывается.
Цикл WHILE выполняется, пока выражение в скобках
принимает значение true.
Здесь нам наконец-то понадобится оператор инкремента ++,
увеличивающий значение переменной на единицу.
Пример:
<?php
$i = 0;
while($i < 10)
echo ++$i;
// 12345678910
?>
бесконечный цикл:
<?php
while(true)
echo 'Привет!';
// такой скрипт зависнет и выдаст ошибку если не сделать прерывание.
?>
В цикл WHILE можно подставить сколько угодно условий:
<?php
$a = 5;
$b = 10;
$c = 0;
while($a < 10 && $b < 20 && $c < 10)
echo ++$a;
В отличие от while, цикл do-while или "цикл с постусловием"
сначала выполняет код, а затем проверяет условие на истинность:
Оператор continue позволяет
пропустить одну итерацию, не мешая дальнейшему
выполнению цикла:
<?php
$arr = [5, 10, 15];
foreach($arr as $value)
{
if($value === 10) // Прерываем текущую итерацию, но не весь цикл
continue;
echo $value, '<br>';
}
/*Результат в браузере:
5
15
*/
Оператор break прерывает работу цикла:
<?php
$arr = [5, 10, 15];
foreach($arr as $value)
{
if($value === 10)
break;
echo $value;
}
/*
Результат в браузере:
5
*/
// Ещё пример:
$array = [2, 3, 6, 1, 23, 2, 56, 7, 1, 15];
$number = 1;
$isNumberFound = false;
foreach ($array as $item) {
echo 'Сравниваем с числом элемент ' . $item . '
';
if ($item === $number) {
$isNumberFound = true;
break;
}
}
echo $isNumberFound ? 'Число найдено' : 'Число не найдено';
Кроме этого, break позволяет выйти сразу из
нескольких циклов, нужно только передать число (иерархию):
<?php
$arr = [5, 10, 15];
foreach($arr as $value)
{
for($i = 0; $i < 10; $i++)
{
if($value === 10)
break 2; // Выходит сразу из for и foreach
echo $value, $i, '<br>';
}
}
?>