[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Цикл в цикле
Alex87K
Здравствуйте! Я новичок! Подскажите пожалуйста как работает цикл в цикле:
Я принцип действия понять не могу... спасибо!
for($i = 1; $i < 10; $i++){
echo 'x' .'<br>';
for($j = 0; $j < $i; $j++){
echo 'n';
}
}
SerginhoLD
ну цикл это несколько повторений примерно одного и того же.
вот в каждом таком повторении, т.е. одной итерации, будет еще один цикл, еще несколько повторений какой-то операции.

ты пошел по магазинам за продуктами

вот обход магазинов это первый цикл

в каждом магазине ты берешь товары с полок и кладешь в пакет, это второй (внутренний) цикл

не знаю что тут может быть не понятного

_____________
"internet explorer всех правильней отображает страницы" ©
Alex87K
SerginhoLD
Объясните тогда если вы всё знаете. Вот результат:

x
nx
nnx
nnnx
nnnnx
nnnnnx
nnnnnnx
nnnnnnnx
nnnnnnnnx
nnnnnnnnn

Почему с каждой интерацией количество n увеличивается? Почему внешний цикл (х) идёт здесь вторым, после (n), внутреннего? И почему в последнем ряду нет x
Ron
Цитата (Alex87K @ 12.12.2016 - 01:29)
Почему с каждой интерацией количество n увеличивается?

Потому что оно зависит от счетчика первого цикла. Количество 'n' равно номеру итерации внешнего.

Цитата (Alex87K @ 12.12.2016 - 01:29)
Почему внешний цикл (х) идёт здесь вторым, после (n), внутреннего?

Перенос строки поставлен не в том месте:
for ($i = 1; $i < 10; $i++) {
echo 'x';
for ($j = 0; $j < $i; $j++) {
echo 'n';
}
echo '<br>';
}
walerus
Alex87K
Может так понятней будет
// Начинается 1 цикл, переменная $i будет меняться( увеличиваться ), пока $i будет < 10
/*

*ЦИКЛ 1* ( на старте ($i = 1); ( если $i < 10, то закончить цикл ); ( если нет, то прибавить 1 к $i )){
нарисовать символ "x" и сделать перевод строки;

*ЦИКЛ 2* ( на старте ($j = 0); ( если $j < $i, то закончить цикл ); ( если нет, то прибавить 1 к $j )){
нарисовать символ "n";
}
}

цикл будет идти "по кругу", пока условие будет выполнятся

for ($i = 1; $i < 10; $i++) {
тут что то выполняется пока $i не станет БОЛЬШЕ или РАВНО 10
}
*/


Почему с каждой интерацией количество n увеличивается?
Цитата
Потому что $i в начале = 1 - рисуется n, потом
$i  = 2 - рисуется nn
$i  = 3 - рисуется nnn  и т.д.

Почему внешний цикл (х) идёт здесь вторым, после (n), внутреннего?
Цитата
Потому что так работает язык PHP, по мере поступления задач, он выполняет в начале "последнюю" поставленную задачу, потом возвращается к "первой"

И почему в последнем ряду нет x
Цитата
Потому что $i уже равен 10 и условие цикла говорит о том, что пора заканчивать....


разжованно на пальцах

Цитата

x   - тут Х = 1, рисуется Х, т.к. у нас стоит <br>, то делается перенос строки

nx   - тут вступает в работу 2й цикл, J=0, а "икс" все еще Х = 1 , условие 2го цикла выполняется, рисуется N,
   работа второго цикла окончена, т.к.  к J прибавляется 1 и условие " $j < $i", не выполняется, т.к. J=1 и Х=1...
   к Х прибавляется 1(условие первого цикла) теперь Х = 2
   рисуется Х, т.к. у нас стоит <br>, то делается перенос строки

nnx   - тут вступает в работу 2й цикл, J=0, а "икс" Х = 2 , условие 2го цикла выполняется, рисуется N,
   работа второго цикла НЕ окончена, т.к.  к J прибавляется 1 и условие " $j < $i", выполняется, т.к. J=1 и Х=2...
   условие 2го цикла выполняется, рисуется N,
   работа второго цикла окончена, т.к.  к J прибавляется 1 и условие " $j < $i", не выполняется, т.к. J=2 и Х=2...
   к Х прибавляется 1(условие первого цикла) теперь Х = 3
   рисуется Х, т.к. у нас стоит <br>, то делается перенос строки
  
   и так далее, в кратце напишу значения
  
nnnx  - X=3 J=3(рисуется nnn)
nnnnx  - X=4 J=4(рисуется nnnn)
nnnnnx  - X=5 J=5(рисуется nnnnn)
nnnnnnx  - X=6 J=6(рисуется nnnnnn)
nnnnnnnx - X=7 J=7(рисуется nnnnnnn)
nnnnnnnnx - X=8 J=8(рисуется nnnnnnnn)
nnnnnnnnn - X=9 J=9(рисуется nnnnnnnnn) и вот тут после завершения 2го цикла, к Х прибавляется 1(условие первого цикла) итого Х=10, 
что не соответствует условию первого цикла... скрипт завершает работу
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.