Здравствуйте! Я новичок! Подскажите пожалуйста как работает цикл в цикле:
Я принцип действия понять не могу... спасибо!
for($i = 1; $i < 10; $i++){
echo 'x' .'<br>';
for($j = 0; $j < $i; $j++){
echo 'n';
}
}
Цитата (Alex87K @ 12.12.2016 - 01:29) |
Почему с каждой интерацией количество 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>';
}
// Начинается 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
}
*/
Цитата |
Потому что $i в начале = 1 - рисуется n, потом $i = 2 - рисуется nn $i = 3 - рисуется nnn и т.д. |
Цитата |
Потому что так работает язык PHP, по мере поступления задач, он выполняет в начале "последнюю" поставленную задачу, потом возвращается к "первой" |
Цитата |
Потому что $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, что не соответствует условию первого цикла... скрипт завершает работу |