Предупреждение: назначение в состоянии - PullRequest
4 голосов
/ 05 апреля 2009

Меня всегда беспокоило то, что при проверке моих php-скриптов на наличие проблем я получаю предупреждение «bool-assign: Assignment in condition» и получаю их много. e.g.:

$guests = array();
$sql = "SELECT * FROM `guestlist`";
$result = mysql_query($sql);
while($row = mysql_fetch_assoc($result))
    $guests[] = $row['name'];

Есть ли другой способ получить несколько или все строки в объекте или массиве? Или в этом методе нет ничего плохого?

Ответы [ 2 ]

13 голосов
/ 05 апреля 2009

попробуйте сделать это вместо:

$guests = array();
$sql = "SELECT * FROM `guestlist`";
$result = mysql_query($sql);
while(($row = mysql_fetch_assoc($result)) !== false)
    $guests[] = $row['name'];

Я полагаю, что php является предупреждением, поскольку $ row = mysql_fetch_assoc ($ result) не возвращает логическое значение.

3 голосов
/ 05 апреля 2009

На самом деле, я считаю, что это предупреждение, потому что вы могли ошибиться. Обычно в условном выражении вы хотите сделать:

if (something == something_else)

Но легко ошибиться и пойти:

if (something = something_else)

Так что, вероятно, предупреждает вас. Если PHP вообще похож на C, вы можете исправить проблему с помощью круглых скобок вокруг вашего утверждения, например так:

while(($row = mysql_fetch_assoc($result)))

Я полагаю, что ответ Джереми немного неверный, потому что PHP напечатан слабо и, как правило, не беспокоится о таких различиях.

...