|
|
|
| Содержимой таблицы я просматриваю вот так:
while($row = mysql_fetch_assoc($res))
echo "<br> id " . $row['id'] . " " . date("d.m.Y H:i:s", $row['time_s']) ;
|
Всё работае нормально, но существо дела мне остается непонятным: что за массив здесь перебирается? В смысле, как он устроен?
Можно ли эту процедуру осуществить не через while, а с помощью for (исключительно для понимания механизма)? | |
|
|
|
|
|
|
|
для: Владимир55
(14.02.2009 в 11:24)
| | о каком массиве Вы говорите?
само собой, любой while формально преобразуется в for
for(; $row = mysql_fetch_assoc($res) ; )
echo "<br> id " . $row['id'] . " " . date("d.m.Y H:i:s", $row['time_s']) ;
|
На самом деле, если чуть более понятно записать условие - будет так:
while( ($row = mysql_fetch_assoc($res)) != false ) ...
|
for( ; ( $row = mysql_fetch_assoc($res) ) != false ; ) ...
|
| |
|
|
|
|
|
|
|
для: Trianon
(14.02.2009 в 11:29)
| | Вот как-то это всё обтекаемо... нестандартно, что ли...
for ($i = 0, $i <= чего? $i++)
Вот в этой традиционной форме как будет? | |
|
|
|
|
|
|
|
для: Владимир55
(14.02.2009 в 11:39)
| | Это не традиционная форма.
Это форма, в которой заранее точно известно количество повторов.
В самом общем случае это количество заранее неизвестно.
Функция получения очередной строки вернет строку ( первую, вторую...пятнадцатую, и т.д.)
если еще осталось что возвращать.
Если строк не осталось - вернет false.
Собственно нумератор строк несложно прикрутить, но условие останется.
for ($i = 0; ($row = mysql_fetch_assoc($res)) != false ; $i++)
echo "$i. ". htmlspecialchars($row['name']) . "<br />\r\n";
|
| |
|
|
|
|
|
|
|
для: Trianon
(14.02.2009 в 11:46)
| | Понятно.
То есть, при желании, через for можно даже просто подсчитать количество строк, ничего не выводя. Но сие осуществимо именно в цикле. А через count, как это делается с "обычными" массивами, здесь не получится. | |
|
|
|
|
|
|
|
для: Владимир55
(14.02.2009 в 12:27)
| | Нет с count() не получится, так как при выборке данных из результирующей таблицы вы имеете дело не с массивом, а с ресурсом. При вызове функции mysql_fetch_assoc() из ресурса извлекается текущая запись, которая и преобразуется в массив. Впрочем, вы всегда можете узнать количество записей в результирующей таблицы при помощи функции mysql_num_rows(). | |
|
|
|
|
|
|
|
для: cheops
(14.02.2009 в 12:51)
| | >Впрочем, вы всегда можете узнать количество записей в результирующей таблицы при помощи функции mysql_num_rows().
В самом общем случае - не всегда. А лишь при буферизированном запросе. | |
|
|
|