За последние 24 часа нас посетили 118895 программистов и 6514 роботов. Сейчас ищут 1382 программиста ...

Почему не отрабатывает for?

Тема в разделе "PHP для новичков", создана пользователем maksitv, 4 сен 2018.

  1. maksitv

    maksitv Новичок

    С нами с:
    4 сен 2018
    Сообщения:
    2
    Симпатии:
    0
    Добрый день. Возникла сложность, казалось бы на пустом месте.
    Код (Text):
    1.  
    2. function Or_(){
    3.     echo '<table border="1">' . "\n \t" ;
    4.     echo '<cption> Таблица истинности "ИЛИ" </cption>' . "\n \t";
    5.     echo "<tr> <th> a </th> <th> b </th> <th> a V b</th></tr>" . "\n \t";
    6.     for ($i=0; $i>1; $i++  ){
    7.         for($j=0; $j>1; $j++){
    8.             echo "<tr> <td> $i </td> <td> $j </td> <td>(int)($i || $j)</td></tr>" . "\n \t";
    9.         }
    10.     }
    11. }
    В результате дальше первого for не уходит. Вызываю соответственно : Or_(); версия php 7.2
    Что не так?
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.870
    Симпатии:
    955
    Мне кажется от версии пхп тут ничего не будет зависеть. В первой итерации устанавливается значение первого аргумента конструкции. Допустим для внешнего цикла это значение ноль в переменную ай. Далее выполняется тело цикла. Не важно какое. Далее выполняется инкремент - ноль станет единицей - и проверится условие продолжение цикла - "пока ай больше единицы". Сейчас ай равна единицы, а значит она не больше единицы, а значит более итераций не нужно.
    Во внутреннем цикле та же хрень. И да, если вдруг что-то пойдёт как надо то на выхлопе будет бесконечный цикла внутри бесконечного цикла так как любое значение большее единицы будет больше единицы, и инкремент будет его только сильнее увеличивать.
     
  3. yanuzay

    yanuzay Активный пользователь

    С нами с:
    28 мар 2018
    Сообщения:
    503
    Симпатии:
    58
    По тому как он прописан он и не должен работать: for ($i=0; $i>1; $i++ ){
    Но с точки зрения синтаксиса php ошибок нет, возможно логическая ошибка, описка
     
  4. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
    @maksitv, уточню чуток:
    1. инициализация (первое выражение)
    2. проверка условия (второе выражение)
    3. выполнение тела цикла/выход из цикла, в зависимости от истинности условия (2)
    4. вычисление "шага цикла" (третьего выражения)
    к пункту 2.
    Условие продолжения в приведённом коде какое?
    Потому и не выполняется.
     
  5. maksitv

    maksitv Новичок

    С нами с:
    4 сен 2018
    Сообщения:
    2
    Симпатии:
    0
    Всем огромное спасибо. Ошибку увидел.
     
  6. АлексейЩемитвдуше

    С нами с:
    4 сен 2018
    Сообщения:
    16
    Симпатии:
    0
    там скобочки не надо вот так надо.
    nction Oк {
    echo '<table border="1">' . "\n \t" ;
    echo '<cption> Таблица истинности "ИЛИ" </cption>' . "\n \t";
    echo "<tr> <th> a </th> <th> b </th> <th> a V b</th></tr>" . "\n \t";

    for ($i=0; $i>1; $i++ ){
    for($j=0; $j>1; $j++){
    echo "<tr> <td> $i </td> <td> $j </td> <td>(int)($i || $j)</td></tr>" . "\n \t";
    }
    }
    }
    Бывает точки нехватает, и все работает, я незнаю для чего вообще такие выступления перед экраном компа, навверно хотят получить ответ а он даст еще 1 вопрос, потом еще, пока не надоест
     
  7. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.129
    Симпатии:
    1.223
    Адрес:
    там-сям
    @АлексейЩемитвдуше используй ббкод [code] чтобы твой процитированный код не превращался в говно
     
  8. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
    @АлексейЩемитвдуше, какой скобочки? Действительно не видишь, что проблема в условии выполнения тела цикла?
     
  9. yanuzay

    yanuzay Активный пользователь

    С нами с:
    28 мар 2018
    Сообщения:
    503
    Симпатии:
    58
    в скобочках реально можно запутаться.
    я в случаю подобной мешанины иногда перехожу на алтернативный синтаксис

    Код (Text):
    1. for(...):
    2.   ...
    3. endfor;
    4. ==========
    5. if(...):
    6. else:
    7. endif;
    8. =====
    9. foreach(...):
    10. ....
    11. endforeach;