Как это l oop работает, хотя счетчик не используется? - PullRequest
0 голосов
/ 18 апреля 2020

Я исследую некоторые старые php файлы для ностальгии, и я заметил, что это то, что я написал прежде, чтобы получить некоторые записи:

     <?php
        for ( $counter = 0; $row = mysqli_fetch_row( $result );++$counter )
        {
           print( "<tr>" );
           foreach ( $row as $key => $value )
           {
             if($key == '6')
             {
                if($value == '1'){print( "<td>12/9/15 6:00PM - 7:00PM</td>" );}
                if($value == '2'){print( "<td>12/9/15 7:00PM - 8:00PM</td>" );}
                if($value == '3'){print( "<td>12/9/15 8:00PM - 9:00PM</td>" );}
                if($value == '4'){print( "<td>12/10/15 6:00PM - 7:00PM</td>" );}
                if($value == '5'){print( "<td>12/10/15 7:00PM - 8:00PM</td>" );}
                if($value == '6'){print( "<td>12/10/15 8:00PM - 9:00PM</td>" );}
             }
             else
             {
                print( "<td>$value</td>" );
             }
           }
           print( "</tr>" );
        }
        mysqli_close( $database );
     ?>

я изменил его на while ($row = mysqli_fetch_row( $result )), и он работает как хорошо, как и ожидалось. Я просто пытаюсь понять логику c, как работает метод for l oop, когда $counter не используется ...

pic

Я изо всех сил пытаюсь понять, почему я использовал этот вид логики c, и как он работает, когда $counter даже не используется для индексации или чего-то еще.

1 Ответ

2 голосов
/ 18 апреля 2020

Самый простой способ понять, как это работает, разобрать for l oop.

for (<initialization>; <condition>; <update expresion>)

В вашем случае у вас есть счетчик, который устанавливается изначально и увеличивается.

for ( $counter = 0; $row = mysqli_fetch_row( $result );++$counter )

Вы не используете счетчик, но на самом деле это не имеет значения, так как единственное, что определяет, продолжается ли l oop, это если условие верно . Поскольку в конечном итоге mysqli_fetch_row перестанет возвращать результаты, l oop прекратит работу. Переменная $counter не используется и игнорируется для цели l oop.

Вы также можете переписать вашу строку для l oop так:

for (;$row = mysqli_fetch_row( $result );) и это также будет работать так же. Но тогда что такое while l oop? Это просто для l oop без выражения инициализации и обновления. Таким образом, вы можете переписать это снова как:

while ($row = mysqli_fetch_row( $result ))

Надеюсь, это прояснит ситуацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...