powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP Конкатенация со скобками и Без
7 сообщений из 7, страница 1 из 1
PHP Конкатенация со скобками и Без
    #38878903
Код: php
1.
2.
3.
4.
$a = 1;
$s_qry= "SELECT * FROM tbl".($a? " WHERE $a": '');
echo $s_qry;
//SELECT * FROM tbl WHERE 1



а без скобок так:
Код: php
1.
2.
3.
4.
$a = 1;
$s_qry= "SELECT * FROM tbl".$a? " WHERE $a": '';
echo $s_qry;
// WHERE 1


Почему?
...
Рейтинг: 0 / 0
PHP Конкатенация со скобками и Без
    #38878912
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому что приоритеты.
...
Рейтинг: 0 / 0
PHP Конкатенация со скобками и Без
    #38878917
vkle, в каком плане?
т.е. сначала выполняется IF-проверка?
остальное игнорируется?
...
Рейтинг: 0 / 0
PHP Конкатенация со скобками и Без
    #38878921
Фотография FishHook
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кракозябрикvkle, в каком плане?
А ты тернарный оператор на if-ы замени и сразу всё станет понятно
...
Рейтинг: 0 / 0
PHP Конкатенация со скобками и Без
    #38879388
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да причом тут ифы.

перефразирую вопрос

$a + $b ? 1 : 0;

какой ответ??? это для автора темы.

а так

$a.$b? '' : 'anonymous';


вот что я имею ввиду...

($a +$b) ? 1 : 0
OR

$a + ( $b ? 1 : 0)

a + b * c

что означает ?

(а+b) * с ИЛИ а+(b * с) ?? второе, ибо умножение приоритетней.

смотрим таблицу приоритетов оператора ? и точки

видим что у точки.

тоесть даже если так написать

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
$a = 0;
$b = 'b';
$c = 'c';
$d = 'd';

$r = $a ? $b : $c . $d;

echo $r;


$a ? $b : $c . $d
означает

$a ? $b : ($c . $d)
...
Рейтинг: 0 / 0
PHP Конкатенация со скобками и Без
    #38879908
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleПотому что приоритеты.

Краткость - сестра таланта :)

Автору - суть ты понял правильно, но происходит чуть не так, как ты подумал.

конкатинация строк - это более приоритетная операция, чем тернарный оператор if else

Таким образом со скобками получилось - (если $a, то взять " WHERE $a", иначе взять '') и прибавить это к "SELECT * FROM tbl"
Без скобок - если ("SELECT * FROM tbl".$a), то взять " WHERE $a", иначе взять ''.

Думаю так должно проясниться.
...
Рейтинг: 0 / 0
PHP Конкатенация со скобками и Без
    #38879917
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёр,

Можно ещё предложить в чуть менее кратком изложении :)

Если есть сомнения в приоритетах или выражение получается достаточно сложным - ставить скобки. Такое выделение блоков подчеркнёт заложенную идею и упростит понимание при сопровождении проекта менее продвинутыми коллегами.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP Конкатенация со скобками и Без
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]