Одна вещь, которая всегда меня беспокоила, заключается в том, что при проверке моих скриптов php для проблем возникает предупреждение «bool-assign: Assignment in condition», и я получаю их много. например:
$guests = array(); $sql = "SELECT * FROM `guestlist`"; $result = mysql_query($sql); while($row = mysql_fetch_assoc($result)) $guests[] = $row['name'];
Есть ли другой способ получить несколько или все строки в объект или массив? Или нет ничего плохого в этом методе?
попробуйте сделать это вместо этого:
$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), не возвращающего логическое значение.
На самом деле, я считаю, что это предупреждение, потому что вы можете ошибаться. Обычно в условном выражении вы имеете в виду:
if (something == something_else)
Но легко ошибиться и пойти:
if (something = something_else)
Так что это, вероятно, предупреждает вас. Если PHP вообще что-то вроде C, вы можете исправить свою проблему с помощью набора круглых скобок вокруг вашего оператора, например:
while(($row = mysql_fetch_assoc($result)))
Я считаю, что ответ Джереми немного отстал, потому что PHP свободно напечатан и, как правило, не беспокоится о таких различиях.