Страницы

Поиск по вопросам

пятница, 15 февраля 2019 г.

Операторы '||' и 'or'

Доброго времени. Сейчас работал с базой и озадачился вопросом: $db_res = sqlite_open( $db_name ) || die ("Ошибка при открытии БД!" ); $query = sqlite_query($db_res, "SELECT * FROM $table") || die ('Ошибка в запросе!'); При использовании "|| die()" получаю ошибку Warning: sqlite_query() expects parameter 1 to be resource, string given in ... on line ... Ошибка в запросе! Если изменить оператор "||" на "or" все работает правильно, почему?


Ответ

Дело в том, что оператор || имеет более высокий приоритет, чем оператор =, по этому $db_res будет присвоен результат выражения sqlite_open( $db_name ) || die ("Ошибка при открытии БД!" ), т.е. true. Оператор or наоборот имеет более низкий приоритет, чем =, следовательно сначала $db_res будет присвоен результат sqlite_open( $db_name ) и только потом будет применено логическое ИЛИ: $db_res || die ("Ошибка при открытии БД!" ) Т.е. если явно расставить приоритеты, то оба выражения будут выглядеть так: $db_res = ( sqlite_open( $db_name ) || die ("Ошибка при открытии БД!" ) ); ( $db_res = sqlite_open( $db_name ) ) or die ("Ошибка при открытии БД!" );

Комментариев нет:

Отправить комментарий