Как применять циклы
Естественным продолжением темы массивов будут циклы. На них я прошу обратить вас особое внимание, так как циклы - одни из главных конструкций языка php. Ради интереса я просмотрел несколько серьезных скриптов и везде используются циклы. Так что этим инструментом надо обязательно уметь пользоваться. Прежде чем я рассмотрю виды циклов, поговорим сперва о синтаксисе языка.
Для каждого цикла необходимо задать условие. Чтобы интерпретатор понял, что это действительно условие, его необходимо взять в круглые скобки ( ). Кстати, эти скобки применяются не только в циклах, а, например, в операторах условного перехода, о которых я расскажу вам в следующей статье.
Также для нормальной работы с циклами нам понадобится связка { }. Она будет обрамлять действия, которые необходимо выполнить.
Ну и собственно необходимы сами циклы, которых в пхп 4 вида.
1. while ( условие ) { действия } - цикл с предусловием.
В этой конструкции сначала проверяется на истинность условие, а затем только выполняются действия.
Например:
<? $i =0; while ($i < 10){ echo $i." "; $i++; } ?>
Этот пример выполнит 10 итераций (проходов цикла ) и в каждой из них выведет номер текущего прохода. Получим:
0 1 2 3 4 5 6 7 8 9
Число 10 не вывелось, так как 10 < 10 - ложное выражение и поэтому цикл сразу прервался.
2. do{ действия } while ( условие ) - цикл с постусловием.
Единственное отличие этого цикла от предыдущего - это изменение порядка действий: сперва выполняются действия, а только потом происходит проверка условия. Такая конструкция позволяет выполнить действия хотя бы один раз, в отличии от предыдущей.
3. Традиционный for ( инициализация; условие; установка шага ) { действия }
В этом цикле можно настроить кол-во итераций, определить произвольное кол-во счетчиков и много еще как его используют.
Пример:
<? for ( $i = 0; $i < 10; $i++ ) { echo $i." "; } ?>
Этот пример делает то же самое, что и первый. Кстати, в этом операторе цикла можно опускать некоторые параметры (инициализацию, условия и установку шага ).
Кстати, если у вас в цикле выполняется только одно действие, можно не использовать {}:
<? for ( $i = 0; $i < 10; $i++ ) echo $i." "; ?>
Вот еще один вариант использования циклов, найденный мною на просторах Интернета и хорошо показывающий все возможности конструкции for:
<? for ($i=0, $j=0, $k="Точки"; $i < 10; $j++, $i += $j) { $k=$k."."; echo $k; } // Выводит Точки.Точки..Точки...Точки.... ?>
4. В пхп специально для перебора массивов существует еще один очень полезный вид цикла foreach.
Пример:
<? $mass[0] = 'A'; $mass[1] = 'B'; $mass[2] = 'C'; foreach ( $mass as $k=>$value ) { echo $k.' = '. $value; } ?>
Здесь каждое значение массива $mass присваивается переменной $k. Отличительной особенностью этой конструкции является то, что для прохода по всему массиву совсем не обязательно знать кол-во элементов в нем - размер определит сам php.
Еще одной особенностью, этого вида цикла, которую я заметил, - это то, что внутри цикла он работает с копией массива, а не с настоящим. Поэтому, чтобы изменить внутри него элементы, надо делать это немного по-другому:
<? $mass[0] = 'A'; $mass[1] = 'B'; $mass[2] = 'C'; foreach ( $mass as $k=>$value ) { $mass[$k] = '1'; echo $k.' = '.$mass[$k]. ' '; } ?>
Выведет:
0 = 1
1 = 1
2 = 1
Когда я сказал своему другу, что закончил разбираться с циклами. Он дал мне задание, которое будет являться хорошим закрепляющим уроком. Суть его в следующем: надо вывести на экран таблицу умножения. По его словам, необходимыми знаниями я уже обладаю, а значит и вы тоже.
Остается пожелать удачи мне и вам. До встречи на следующем уроке 😉
Тема улет…
У меня будет много вопросов по етой теме по етому не подумайте что ето спам…
1. как прочитать файл построчно (нужную строку) например
строка первая: Максим 20 лет Львов Учусь Универе роботаю дворником
строка вторая: Наташа не учусь не роботаю кто я незнаю
И.Т.Д
Как можно ето зделать.. Причем росчет идет на то что, в етот фаил не только будет читаться но и записовать в нево новие дание…
Может при записи на определеной строке ставить какуюта метку? Или что? Посоветуйте плиз..
Вообще можно такое сделать и через смещения (функция fseek), но мне кажется лучше использовать тут функцию file, которая считывает сразу весь файл построчно в массив (каждая строка - элемент массива).
Изменять данные прям в этом массиве, а при сохранении - записать весь массив в файл в цикле через fputs.
ух! много функций я сразу сними не розобралась, но сразу появился вопрос ви можете навести пример скрипта которий с одново файла будет читать громадний произвольний текст и если хоть одно слово совпадает то оно (то слово) занесется в переменую…
Принцип роботи блеклиста или фильтра матов…
Можете помоч?
Хм. Фильтр мата это полезная очень вещь. Изучу эту тему и скоро напишу пост про это. Спасибо за идею
цитата: Ну и собственно необходимы сам циклы.
очепятка =)
а в целом статья на хорошем уровне.
Спасибо! Исправил.
Орфус поможет избавиться от сообщений пользователей в коментах об ошибках. Я сделал так на своем сайте.
Про точки не догнал, зачем там переменная $j нужна, не понятна, если можно сделать просто $i++
Объясните по-шагово цикл с точками. вообще не понял! Спасибо
to Archetype:
Там ничего сложного, главное самому пройти по всем условиям.
Например вот исходное.
$i=0, $j=0, $k=”Точки”; $i < 10; $j++, $i += $j
Первый цикл идет при $i=0, $j=0, $k="Точки". У нас $i<10, значит цикл проходит. Операторы внутри цикла дают "Точки.".
В конце первого цикл выполнения $j++, т.е. $j = 1, gjnjv считается $i = $i + $j, т.е. $i = 0 + 1 = 3. После следующего цикла $j = 2, $i = $i + $j = 1 + 2 = 3, и последний цикл $j = 3, $i = $i + $j = 3 + 3 = 6. С этими значениями цикл пробегает последний четвертый раз, т.к. при следующем вычислении $i = 10, что противоречит условию. Вроде понятно объяснил ) Если не понятно - советую вместе с $k выводить $i и $j при которых достигнуто это значение $k. Так будет лучше понять вычисления в FOR.
Прошу прощения за опечатки - не углядел за руками)
“В конце первого цикл выполнения $j++, т.е. $j = 1, gjnjv считается $i = $i + $j, т.е. $i = 0 + 1 = 3.”
Верно будет так:
“В конце первого цикл выполнения $j++, т.е. $j = 1, потом считается $i = $i + $j, т.е. $i = 0 + 1 = 1.”
Как сделать таблицу умножения
Вот здесь на этом же сайте написано ))