![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Объясните пожалуста оператор РНР |
|
Объясните пожалуста оператор РНР
|
Ветеран Сообщения: 1630 |
Не могу понять очень распространенную фразу в PHP, т.к. в учебниках она разбирается по частям, а не вместе:
1)$sql="SELECT * FROM table WHERE id_s='$last' ORDER BY id"; 2)$result=@mysql_query($sql); 3)if(@mysql_num_rows($result)>0) { 4)while($row=@mysql_fetch_array($result)) { операторы } В строках 1-2 вроде понятно: в переменную $result запихиваются все строки из таблицы, имеющие в колонке id_s определенное значение $last и эти строки отсортированы по возрастанию значения в колонке id 3) условный оператор тоже понятен: если в $result вообще отобрались какие-то строки(хотя бы одна >0), то условие и все что в него вложено выполняется. Но что за странное условие цикла 4), не пойму mysql_fetch_array судя по описанию и по названию $row должна строки таблицы из $result запихивать в элементы массива с индексами-названиями т.е получается что какая-то неопределенная переменная $row сравнивается со строкой из таблицы $result. Естественно они не будут равны и цикл не должен выполняться, но в программе предполагается, что он вдруг выполняется, будто под while не логическая операция сравнения, а будто бы оператор присваивания переменной (элементу массива?) $row значения строки из $result. Объясните пожалуйста, кто знает, что это за оператор while, может где есть нормальные примеры, а не просто теория. |
|
Отправлено: 20:30, 24-04-2013 |
Кот Ти Сообщения: 7318
|
Профиль | Отправить PM | Цитировать В строке 4 функция mysql_fetch_array() одну строку из запроса разбивает в массив и присваивает его в $row. Затем while проверяет, если $row - не false, то выполняются операторы. $row == false, если, например, закончились строки на перебор.
Внутри while операторы выполняются до тех пор, пока условие в скобках true. |
Отправлено: 21:03, 24-04-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Разве там не присвоение?
PHP: Оператор присваивания - Manual PHP: while - Manual Update: припоздал ![]() |
Отправлено: 21:11, 24-04-2013 | #3 |
Ветеран Сообщения: 1630
|
Профиль | Отправить PM | Цитировать Цитата Coutty:
пока условие в скобках true. » Но в скобках-то не условие, а оператор присваивания, а в некоторых мануалах пишут, что должно быть условие. Условие выглядит ведь $row==чему-то, т.е. 2 знака =, а не один. Iska привел ссылку, где в while должно стоять expr-"выражение", а что такое "выражение" не пояснено. Еще можно понять пример где while($a = each($two)), но там тоже одно = , и по крайней мере функция each означает обход "каждого". Откуда можно понять, что выражение $row=столбцам строки - это TRUE, а выражение $row=пусто(кончились строки) - это FALSE? В описании mysql_fetch_array это не указано. Ведь $row после выполнения while должно быть, наверно, равно значению последней полученной строки, а не FALSE? (вернее $row[0]=первый столбец последней строки, $row[1]=второй столбец последней строки,...??) Что означает значок "@" перед функцией-оператором? В описании функций этого значка нет. Может, дело в нем? |
Последний раз редактировалось alef2474, 24-04-2013 в 23:23. Отправлено: 23:18, 24-04-2013 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата alef2474:
Цитата:
|
|||
Отправлено: 02:14, 25-04-2013 | #5 |
Ветеран Сообщения: 1630
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Базовый оператор присваивания обозначается как "=". На первый взгляд может показаться, что это оператор "равно". На самом деле это не так. В действительности, оператор присваивания означает, что левый операнд получает значение правого выражения, (т.е. устанавливается значением). Результатом выполнения оператора присваивания является само присвоенное значение. Таким образом, результат выполнения "$a = 3" будет равен 3. Это позволяет делать трюки наподобие: » Спасибо, вчитался в это сумбурное объяснение и понял, особенно благодаря примеру. Имхо, объяснить надо было по-другому: Выражение присваивания, кроме выполнения собственно операции присваивания значения правого операнда левому операнду, может выступать и целиком как значение только правого операнда для различных операций. Т.е. выражение $a=3 может выступать как просто 3, а выражение $b=false как просто false. |
Последний раз редактировалось alef2474, 26-04-2013 в 14:39. Отправлено: 14:28, 26-04-2013 | #6 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - РНР+ЯваСкрипт | xNiSSaNx | Программирование и базы данных | 0 | 10-02-2012 11:38 | |
Cессии в РНР | pauluss | Вебмастеру | 1 | 11-11-2003 13:31 | |
РНР ЧАТ | CAHbE | Вебмастеру | 2 | 28-08-2003 21:50 | |
Как пересабрать РНР? | Hrun | Программное обеспечение Linux и FreeBSD | 6 | 14-07-2003 20:43 |
|