PHP Урок 21. Циклы for, while, foreach
Предыдущие уроки:
Программируем на PHP - Введение
PHP - Запросы от браузера к серверу
PHP - Как работает сервер
PHP - Урок 4. PHP - интерпретатор
PHP - Урок 5. Переменные сервера и глобальные переменные
PHP - Урок 6. Конструкции print и echo. Кавычки одинарные и двойные и конкатенация строк
PHP - Урок 7. Переменные, константы и условия
PHP - Урок 8. Точка входа в приложение. Настройка mod_rewrite и файл .htaccess
PHP - Урок 9. Массивы и switch. Кодим основной каркас
PHP - Урок 10. COOKIE
PHP - Урок 11. Функции. Добавляем ядро системы core.php
PHP - Урок 12. Обзор модели MVC. Добавляем шаблоны страниц в наше приложение
PHP - Урок 13. Введение в базы данных и SQL. СУБД MySQL. Подключаемся к БД из нашего приложения
PHP - Урок 14. Регистрация пользователей на сайте
PHP Урок 15. Авторизация пользователей
PHP. Урок 16. Проверка авторизации. Функция check().
PHP Урок 17. Добавляем CSS фреймворк Bootstrap и jQuery
PHP Урок 18. Загрузка файлов на сервер
PHP Урок 19. Добавляем меню навигации
PHP Урок 20. Создаем AJAX (JavaScript) API
Теория
На самом деле эту тему я оставил до сих пор не просто так. Во первых мы их будем рассматривать на примере выборки множества строк таблиц из наших баз данных. А во вторых - переменные, условия и циклы составляют основную философию всех компиляторов и процессоров. Ну о первых двух составляющих философии мы говорили достаточно. А о циклах расскажу сегодня. На самом деле чтобы понять логику циклов достаточно проникнуть в 2 принципа программирования:- Программа получает исходные данные и возвращает модифицированные данные.
- Программа может состоять из нескольких программ (говоря по-русски - подпрограмм).
Так вот. В нашем не идеально мире если Исходные данные назовем их IN и модифицированные - OUT проходя через программу (или подпрограмму - неважно) принимают одно состояние, то совсем не обязательно, что при втором прохождении через тот же сегмент, который их модифицирует они будут иметь такое же. Но только в случае если на них способна воздействовать среда управления. (Короче это из кибернетики =)). Ну ладно сейчас перескажу проще))
Простой пример такого внешнего воздействия - это переменная определенная все цикла (перед ним) Допустим i.
И допустим внутри цикла мы ее увеличиваем на 1. Тогда каждый раз при выполнении одинакового кода внутри цикла, мы будем получать новый результат его работы (значение переменной i).
Теперь давайте разберем некоторые основные типы циклов.
Цикл for
Этот цикл представляет возможность повторять участок кода на основании изменения значения некоторой переменной.
for ($i=1; $i<10; $i++) echo 'this: '.$i;
Следует заметить, что саму переменную $i внутри теле цикла изменять крайне нежилательно.
Цикл while
То же что и for, но в качестве управляющего элемента не переменная, а условие. (хотя принцип работы такой же).
$i=1;
while($i<10) {
echo 'this: '.$i;
$i++;
}
А здесь изменение переменной внутри цикла крайне важно. Иначе мы попадем в бесконечный цикл.
Цикл foreach
Когда этому циклу передают набор объектов (массив) он повторяет заданный ему код столько раз, сколько элементов в последовательности, смещая указатель в каждой итерации на новый элемент.
Самая часто используемая последовательность действий на PHP такова:
- Делаем SQL-запрос к базе данных, который возвращает не один, а много одинаковых записей. Допустим все записи пользователя.
$sql_get_posts = 'SELECT * FROM posts WHERE user_id=100;
$posts = $connectToDB->fetchAll($sql_get_posts);
- Перебираем все эти записи, чтобы красиво их вывести:
foreach($posts as $item) {
echo 'Пользователь'.$item['name'].' пишет:<br />';
echo $item['post'];
echo '<br /><small>Отправлено '.$item['writed_time'].'<small><hr />';
}
Цикл Do (также известный как do..while) и циклы с помощью меток
Эти я по-моему в php вообще никогда не применял. Но знать что они существуют в качестве мебели стоит. Первый начинается с do, а условие while в конце и он гарантирует что код внутри цикла выполнится хотя бы один раз. А второй вообще лучше изучать на примере кода C.