создание и продвижение сайта (вбиваю в ТОП-10, как гвозди)Настройка и сопровождение платной рекламы яндекс.директ

Урок 14. Работа с циклами в PHP

Содержание

Теория

Цикл в цикле

Циклы можно вкладывать друг в друга.

Задача

Вывести строку '111222333444555666777888'. Надо запустить 2 вложенных друг в друга цикла: 1-й цикл будет перебирать числа (1, 2 и т.д.), а 2-й цикл будет повторять эти числа 3 раза.

Решение

<?for($i=1;$i<=8;$i++){for($j=1;$j<=3;$j++){echo$i;/*Выводит '111', потом '222' и т.д.*/}}?>

111222333444555666777888

Внимание! 1-й цикл имеет счетчик i, 2-й j, а если будет еще и 3-й, то у него будет счетчик k (так принято).

Пирамиды

Строка 'xxxxxxxx'

Сделать строку, заполненную 8 'x'.

Для этого сделаем переменную s и при каждом проходе цикла добавим в нее 1 букву 'x'. Сначала в s будет '', потом 'x', потом 'xx' и т.д., пока цикл не закончится.

После цикла мы получится нужная строка:

<?$s='';/*Начальное значение - пустые кавычки*/for($i=0;$i<8;$i++){$s.='x';}echo$s//Выведет 'xxxxxxxx'?>

xxxxxxxx

Задача напоминает суммирование элементов массива, только вместо чисел суммируются строки, постепенно накапливая результат в переменной s.

Пирамида с 'x'

Вывести пирамиду:

x

xx

xxx

Изменим предыдущую задачу, при каждом проходе цикла выводим содержимое s и <p>.

Т.к. в цикле s постепенно растет, то сначала выведется 'x' и <p>, потом 'xx' и <p> и т.д.:

<?$s='';for($i=0;$i<8;$i++){$s.='x';echo$s.'<p>';}?>

x

xx

xxx

xxxx

xxxxx

xxxxxx

xxxxxxx

xxxxxxxx

Строка '12345678'

Сделать строку '12345678'. Задача аналогична задаче с 8 'x', только прибавлять будем не 'x', а счетчик цикла:

<?$s='';for($i=1;$i<=8;$i++){$s.=$i;}echo$s//Выведет '12345678'?>

12345678

Пирамида с цифрами

Вывести пирамиду:

111

222

333

Похожую задача была ('111222333444555666777888'). Нужна такая же строка, но с <p> в нужных местах. Запускаем 2 вложенных друг друга цикла:

<?for($i=1;$i<=8;$i++){for($j=1;$j<=3;$j++){echo$i;}echo'<p>';/*Выводит <p>, чтобы было в столбик*/}?>

111

222

333

444

555

666

777

888

Пирамида с цифрами

Вывести пирамиду:

1

22

333

Задача аналогична предыдущей, только внутренний цикл должен крутиться не 3 раза, а в соответствии с числом: если у нас 1, то повторяем цикл 1 раз, если 2, - 2 раза, если 3, - 3 раза.

Надо в условии внутреннего цикла написать следующее: $j<=$i. В этом случае, если $i=1, то это все-равно, что в условии написать $j<=1, а если $i=2, то $j<=2 и т.д.:

<?for($i=1;$i<=8;$i++){for($j=1;$j<=$i;$j++){echo$i;}echo'<p>';}?>

1

22

333

4444

55555

666666

7777777

88888888

В этой пирамиде не используется накопление в строку. Можно и с накоплением, но это получится чуть сложнее:

<?for($i=1;$i<=8;$i++){$s='';/*Каждый раз зачищаем строку*/for($j=1;$j<=$i;$j++){$s.=$i;}echo$s.'<p>';}?>

1

22

333

4444

55555

666666

7777777

88888888

While без заданного количества итераций

Бывают задачи, в которых количество итераций цикла неизвестно заранее. К примеру: дано число, нужно делить его на 2 столько раз, пока результат не станет меньше 8. Нужно вывести число, которое при этом получится.

В этом случае мы не знаем количество итераций. Сделаем условием цикла условие пока число больше 8:

<?$n=88;while($n>=8){$n=$n/2;}echo$n?>

5.5

Можно использовать и цикл for. В этом случае он будет без тела (без [] и в конце ставим точку с запятой):

<?for($n=88;$n>=8;$n=$n/2);echo$n?>

5.5

Если не поставить точку с запятой в конце цикла, следующая строчка попадет под цикл и повторится столько раз, сколько итераций в цикле.

<?for($n=88;$n>=8;$n=$n/2)echo$n.'<p>'?>

88

44

22

11

Практика

Задачи для решения. Пирамиды

Задача 1

С помощью цикла for сформировать строку '12345678' и записать ее в переменную $s.

Решение:

<?$s='';for($i=1;$i<=8;$i++){$s.=$i;}echo$s?>

12345678

Задача 2

С помощью цикла for сформировать строку '87654321' и записать ее в переменную $s.

Решение:

<?$s='';for($i=8;$i>=1;$i--){$s.=$i;}echo$s?>

87654321

Задача 3

С помощью цикла for сформировать строку '-1-2-3-4-5-6-7-8-' и записать ее в переменную $s.

Решение:

<?$s='-';for($i=1;$i<=8;$i++){$s.=$i.'-';}echo$s?>

-1-2-3-4-5-6-7-8-

Задача 4

Нарисовать пирамиду. У пирамиды должно быть 8 рядов, а не 3:

x

xx

xxx

Решение:

<?$s='';for($i=0;$i<8;$i++){$s.='x';echo$s.'<p>';}?>

x

xx

xxx

xxxx

xxxxx

xxxxxx

xxxxxxx

xxxxxxxx

Задача 5

С помощью 2 вложенных циклов нарисовать пирамиду:

1

22

333

Решение:

<?for($i=1;$i<=8;$i++){for($j=1;$j<=$i;$j++){echo$i;}echo'<p>';}?>

1

22

333

4444

55555

666666

7777777

88888888

Задача 6

Нарисовать пирамиду, воспользовавшись циклом for:

xx

xxxx

xxxxxx

Решение:

<?$s='';for($i=0;$i<8;$i=$i+2){$s.='xx';echo$s.'<p>';}?>

xx

xxxx

xxxxxx

xxxxxxxx

Содержание

Отвечу на любые вопросы. С уважением, Дмитрий Владимирович.

Ваше письмо×
Free Web Hosting