одиночный = в то время как цикл - PullRequest
2 голосов
/ 04 мая 2011

Я практикую php в настоящее время.У меня есть один вопрос.

Я вижу один = на некоторых циклах while.часто на MySQL запросов.так что же это означает?

two == означает равный.но один =?Можете ли вы сказать мне логику этого?

Ответы [ 6 ]

11 голосов
/ 04 мая 2011

Одиночный = означает «назначение». Присвоение всегда присваивает переменной и возвращает результат. Так, например:

while($row = mysql_fetch_array($results)) {
    // ...
}

Хотя mysql_fetch_array($results) возвращает допустимый массив, он зацикливается. Когда он возвращает null (то есть это конец результатов), цикл завершается.

3 голосов
/ 04 мая 2011
while ($row = mysql_fetch_row($query))
{
    //do stuff
}

Это продолжает запрашивать дескриптор результата, пока не будет найдено значение NULL (конец результата). $row содержит строку, извлеченную из вызова, чтобы ее можно было использовать для обработки.

Это также "сокращение" для проверки результата NULL:

while (($row = mysql_fetch_row($query)) != null)
{
    //do stuff
}

Он также может заменить цикл for:

for ($i = 0; $i < mysql_num_rows($query); $i++)
{
    //do stuff
}

Все эквивалентны.

2 голосов
/ 04 мая 2011

single = для назначения

$a = 9;

== для сравнения

if($a == 9) echo 'hello';

http://www.w3schools.com/PHP/php_operators.asp

1 голос
/ 04 мая 2011

Это оператор присваивания .

0 голосов
/ 05 мая 2011

Вот альтернатива:

$row = mysql_fetch_assoc($thing);
while (isset($row)) {

  // do stuff

  $row = mysql_fetch_assoc($thing);
}

Вы можете видеть, что это немного меньше печатает (и код, вероятно, более эффективен) здесь:

while (($row = mysql_fetch_assoc($thing)) != null) {
  // do stuff
}
0 голосов
/ 04 мая 2011

Хотя текущее значение 'x' может быть успешно назначено переменной 'y', продолжайте.

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