Пусть у нас дан вот такой массив:
<?php
$arr = [1, 2, 3, 4, 5];
?>
Давайте переберем этот массив циклом foreach
:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as $elem) {
echo $elem;
}
?>
На самом деле элементы массива можно перебрать
и обычным циклом for
. Такое нужно
редко, но иногда бывает полезно. Давайте
выполним такой перебор:
<?php
$arr = [1, 2, 3, 4, 5];
$length = count($arr);
for ($i = 0; $i < $length; $i++) {
echo $arr[$i];
}
?>
Дан массив:
<?php
$arr = ['a', 'b', 'c', 'd', 'e'];
?>
С помощью цикла for
выведите все эти
элементы на экран.
Применение
Выведем на экран все элементы массива, кроме нулевого. Для этого начнем счетчик цикла не с нуля, а с единицы:
<?php
$arr = [1, 2, 3, 4, 5];
$length = count($arr);
for ($i = 1; $i < $length; $i++) {
echo $arr[$i];
}
?>
Дан массив:
<?php
$arr = ['a', 'b', 'c', 'd', 'e'];
?>
С помощью цикла for
выведите на экран
все элементы этого массива, кроме последнего.
Дан массив:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8];
?>
С помощью цикла for
выведите на экран
первую половину элементов этого массива.
Распространенная ошибка
В следующем коде подсчет элементов массива вынесен в условие цикла:
<?php
$arr = [1, 2, 3, 4, 5];
for ($i = 1; $i < count($arr); $i++) {
echo $arr[$i];
}
?>
На первый взгляд кажется, что этот код лучше,
так как мы избавились от лишней переменной
$length
. На самом деле это не так.
Дело в том, что в приведенном коде функция
count
будет заново подсчитывать количество
элементов массива каждую интерацию цикла.
Это не оптимально.
В следующем коде некоторый программист находит сумму всех элементов массива, кроме нулевого:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8];
$sum = 0;
for ($i = 1; $i < count($arr); $i++) {
$sum += $arr[$i];
}
echo $sum;
?>
Что не так с этим кодом? Исправьте ошибку автора кода.