Как применять циклы

Естественным продолжением темы массивов будут циклы. На них я прошу обратить вас особое внимание, так как циклы - одни из главных конструкций языка 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

Когда я сказал своему другу, что закончил разбираться с циклами. Он дал мне задание, которое будет являться хорошим закрепляющим уроком. Суть его в следующем: надо вывести на экран таблицу умножения. По его словам, необходимыми знаниями я уже обладаю, а значит и вы тоже.

Остается пожелать удачи мне и вам. До встречи на следующем уроке 😉





Читайте также:



13 Ответов на “Как применять циклы”

  1. lena

    Тема улет…
    У меня будет много вопросов по етой теме по етому не подумайте что ето спам… :-)
    1. как прочитать файл построчно (нужную строку) например
    строка первая: Максим 20 лет Львов Учусь Универе роботаю дворником :-)
    строка вторая: Наташа не учусь не роботаю кто я незнаю
    И.Т.Д
    Как можно ето зделать.. Причем росчет идет на то что, в етот фаил не только будет читаться но и записовать в нево новие дание…
    Может при записи на определеной строке ставить какуюта метку? Или что? Посоветуйте плиз..

  2. novice

    Вообще можно такое сделать и через смещения (функция fseek), но мне кажется лучше использовать тут функцию file, которая считывает сразу весь файл построчно в массив (каждая строка - элемент массива).
    Изменять данные прям в этом массиве, а при сохранении - записать весь массив в файл в цикле через fputs.

  3. lena

    ух! много функций я сразу сними не розобралась, но сразу появился вопрос ви можете навести пример скрипта которий с одново файла будет читать громадний произвольний текст и если хоть одно слово совпадает то оно (то слово) занесется в переменую…
    Принцип роботи блеклиста или фильтра матов…
    Можете помоч?

  4. novice

    Хм. Фильтр мата это полезная очень вещь. Изучу эту тему и скоро напишу пост про это. Спасибо за идею :)

  5. Klansi

    цитата: Ну и собственно необходимы сам циклы.
    очепятка =)

    а в целом статья на хорошем уровне.

  6. novice

    Спасибо! Исправил.

  7. Орфус поможет избавиться от сообщений пользователей в коментах об ошибках. Я сделал так на своем сайте.

  8. KEI

    Про точки не догнал, зачем там переменная $j нужна, не понятна, если можно сделать просто $i++

  9. Archetype

    Объясните по-шагово цикл с точками. вообще не понял! Спасибо

  10. 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.

  11. Прошу прощения за опечатки - не углядел за руками)
    “В конце первого цикл выполнения $j++, т.е. $j = 1, gjnjv считается $i = $i + $j, т.е. $i = 0 + 1 = 3.”
    Верно будет так:
    “В конце первого цикл выполнения $j++, т.е. $j = 1, потом считается $i = $i + $j, т.е. $i = 0 + 1 = 1.”

  12. Григорий

    Как сделать таблицу умножения


© Copyright. . I-Novice. All Rights Reserved. Terms | Site Map