Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Неясно действие вложенного цикла
 
 автор: lgar   (04.08.2006 в 16:06)   письмо автору
 
 


for($i = 1; $i<3; $i = $i + 1) {

     for ($j =1; $j<3; $j=$j + 1) {
            for($k=1; $k<3; $k =$k+1) {
                print "I: $i, J:$j , K: $k\n";
                            }
             }
}

Проследите за ходом моих мыслей и скажите ,плис, где ошиба:
Переменная $i равен 1 ,1<3,переменная i увеличивается на единицу(счетчик т.е значение увеличивается,но в блок цикла идет предыдущее значение то есть 1
Переменная $j=1,1<3,пееремнная $j увеличивается на единицу(счетчик)
Переменная $j=1,1<3,пееремнная $j увеличивается на единицу(счетчик)
вывод на экран I: 1, J: 1, K: 1
Переменная $j=2,2<3,пееремнная $j увеличивается на единицу
Переменная $k=2,2<3,пееремнная $k увеличивается на единицу
Переменная $i=2,2<3,пееремнная $i увеличивается на единицу
вывод I: 1, J: 1, K: 2
Переменная $k=3,3<3 неверно поседний цикл останавливается
Переменная $j=2,2<3,пееремнная $j увеличивается на единицу
Переменная $i=2,2<3,пееремнная $i увеличивается на единицу
вывод на экран I: 2, J: 2, K: честно говоря не знаю.Но должно 1(почему?)
Вот ошибки,запутался в 3 соснах
А правильный ответ следующий:
I: 1, J: 1, K: 1
I: 1, J: 1, K: 2
I: 1, J: 2, K: 1
I: 1, J: 2, K: 2
I: 2, J: 1, K: 1
I: 2, J: 1, K: 2
I: 2, J: 2, K: 1
I: 2, J: 2, K: 2


А с break;
все совсем осложняется,непонятно после прерывания логика вывода цифр.



for($i = 1; $i<3; $i = $i + 1) {

     for ($j =1; $j<3; $j=$j + 1) {
            for($k=1; $k<3; $k =$k+1) {
                print "I: $i, J:$j , K: $k\n";
                break;
                            }


             }
}

ответ
I: 1, J: 1, K: 1
I: 1, J: 2, K: 1
I: 2, J: 1, K: 1
I: 2, J: 2, K: 1

извините за <<корявость>> изложенного,просто уже башка болит от этих циклов.
спасибо

   
 
 автор: Loki   (04.08.2006 в 16:28)   письмо автору
 
   для: lgar   (04.08.2006 в 16:06)
 

не так вы объясняете: цикл работает пока условие выполняется. Так что единица прибавляется только после прохода цикла. Так что результат вполне закономерный: сначала полностью прокручивается цикл K, потом наступает следующий этап цикла J, в котором снова прокрувичается K, когда полностью прокрутится J начинается следующий проход I и так далее.

break, в данном случае, прерывает цикл k, так что тут он циклом и не является, так как исполняется всего один раз.
попробуйте использовать
break 2;
break 3;
первый будет прерывать сразу два вложенных цикла, второй - все три.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования