Циклы
Автор: Ильин Александр
Одна из областей где
возникает необходимость задействовать такую
конструкцию
как цикл - работа с массивами, например: сортировка, поиск
нибольшего, наименьшего, среднего значения или банальный
форматированный
вывод, да мало ли что еще. Давайте
рассмотрим что предусмотрено для этих
целей в PHP. Итак,
первый пример - использование конструкции for для работы
с
массивом.
1. <?php
2.
3. // определим некоторый массив случайных
чисел
4. $arr =
array(145, 21, 46, 213, 114, 7, 84, 91, 302, 501,
37); //
хватит
5.
6. $cnt = count($arr); //
теперь в $cnt количество
элементов массива
$arr
7.
8. // попробуем найти максимально и
минимальное значения массива
9. // и вывести их значения и индексы
10.
11. // определяем
начальные значения
12. $min = $max = $arr[0];
13. $index_min = $index_max = 0;
14.
15. // а вот и цикл
16. for
($i = 1; $i < $cnt; $i++) {
17. if ($arr[$i]
> $max) {
18. $index_max = $i;
19. $max = $arr[$i];
20. } else
21. if
($arr[$i] < $min) {
22. $index_min = $i;
23. $min = $arr[$i];
24. }
25. }
26.
27. echo "Максимальное число
\$arr[$index_max] = $max<br>";
28. echo "Минимальное число \$arr[$index_min] = $min<br>";
29.
30.
?>
|
Результат работы
программы:
Максимальное число $arr[9] = 501
Минимальное число $arr[5] = 7
Несколько комментариев.
Язык PHP имеет очень продвинутые (развитые)
библиотеки
функций, и там наверняка имеются такие элементарные, как поис
минимума, максимумаи т.п., кому интересно - проверьте, нас
же сейчас
интересуют сами механизмы, поэтому я и использую
простейшие задачи.
Посмотрите на оператор for, примененный
нами: for ($i = 1; $i < $cnt; $i++)
, как работает эта
конструкция? Сначала определяется переменная $i и ей
присваивается начальное
значение 1 - это так называемый блок инициализации.
Затем
на каждой итерации цикла вначале проверяется условие $i < $cnt,
если
условие верно (true), то цикл продолжает выполняться
- т. е. один раз
выполняется тело цикла: все что между
фигурными скобками {...}. В конце
каждой итерации
выполняется третья часть for: $i++
(увеличение $i на
единицу). И
опять повтор проверки условия. Как только условие перестанет
выполняться ($i станет >= $cnt) выполнение цикла завершается
- выполняется
следующий за телом цикла код. Такая
конструкция цикла очень распространена
в языке Си/Си++ и
других, унаследствовавших от него синтаксис.
Рассмотрим
еще один интересный способ работы с массивом в цикле
специфичный
для PHP - конструкция foreach.
1. <?php
2.
3. // определим некоторый массив случайных
чисел
4. $arr =
array(145, 21, 46, 213, 114, 7, 84, 91, 302, 501,
37); //
хватит
5.
6. foreach ($arr as $k => $v) {
7. echo "\$arr[$k] = $v<br>"; // вывод значения очередного
элемента массива
8. }
9.
10. $summ = 0;
11. foreach
($arr as $v) {
12. $sum += $v;
13. }
14. echo "Сумма элементов массива равна $sum";
15.
16. ?>
|
Результат:
$arr[0] = 145
$arr[1] = 21
$arr[2] = 46
$arr[3] = 213
$arr[4] = 114
$arr[5] = 7
$arr[6] = 84
$arr[7] = 91
$arr[8] = 302
$arr[9] = 501
$arr[10] = 37
Сумма элементов
массива равна 1561
В первом случае использования
foreach используются две новые переменные $k
- индекс очередного элемента
массива и $v - значение этого
элемента массива
(естественно, вместо k и v можно
использовать любые разрешенные имена
переменных). Такой
способ более показательный для масива и нет
необходимости
определять размер массива до начала цикла.
Во втором
случае показан пример использования foreach если нет
необходимости работать с индексами элементов массива, а
достаточно знать
только их значения. Можно назвать этот
вариант сокращенной формой foreach.
|