Про while() и бесконечный цикл.

  • Автор темы Exalted
  • Дата начала

Exalted

Guest
Про while() и бесконечный цикл.

Здравствуйте. Помогите, пожалуйста.

Этот код работает как нужно:

PHP:
while($result = mysql_fetch_assoc($query)){
    echo '<a href="#">'.$result['name'].'</a>';
     
    if(current($result) == mysql_num_rows($query)){
      echo '.';}
    else{
      echo ',&nbsp;';
    }
}
Но если вышеприведённый код изменить на такой:
PHP:
$result = mysql_fetch_assoc($query);
while($result){
    echo '<a href="#">'.$result['name'].'</a>';
     
    if(current($result) == mysql_num_rows($query)){
      echo '.';}
    else{
      echo ',&nbsp;';
    }
}
то цикл становится бесконечным, браузер умирает. :)

Собственно сам вопрос - почему второй экземпляр кода работает неправильно?

Ведь
while($result = mysql_fetch_assoc($query)) {}
тоже самое, что и
$result = mysql_fetch_assoc($query);
while($result){}.

Или я ошибаюсь?

p.s
Если после
PHP:
while($result = mysql_fetch_assoc($query)){
    echo '<a href="#">'.$result['name'].'</a>';
     
    if(current($result) == mysql_num_rows($query)){
      echo '.';}
    else{
      echo ',&nbsp;';
    }
}
вызвать var_dump($result), то он выведет почему-то "bool(false)". Я слегка недопонимаю - почему $result стал пустым?

php 5.0.2
apache 1.3.31
mysql 4.1.8
WinXP sp2 rus
 

tony2001

TeaM PHPClub
потому, что в 1 - $result изменяется (как результат выражения), а в 2 - $result не изменится никогда.
 
Сверху