Добрый день! Объясните пожалуйста разницу в расставлении скобок в конструкции if.
Собственно сами примеры:
if (empty($subject) && empty($text)) - тут вроде все более-менее понятно.
if (empty($subject) && (!empty($text))) - почему тут! empty в дополнительных скобках?
if ((!empty($subject)) && empty($text)) - аналогично, почему и тут! empty в доп. скобках?
можно ли было бы обойтись без этих скобок?
Всем добра!
PHP
Объясните пожалуйста разницу в расставлении круглых скобок в конструкции IF.
В языках программирования зачастую есть приоритеты операций. Например логическое И сработает раньше чем логическое ИЛИ (это для с++). И вот когда программист не уверен что сработает раньше и лень читать в интернете он ставит дополнительные скобочки что бы однозначно обозначить приоритет операции (скобочка имеет один из высоких но не наивысший для с++ приоритет). В данном случае, я так понимаю, программист хотел убедится что отрицание "!" будет выполняться раньше чем логическое И
В вашем примере круглые ни на что не влияют и лично я не вижу смысла использовать варианты кроме первого.
Круглые скобки внутри if нужны, когда условий больше двух + используется оператор ИЛИ.
Например:
<?php
$a = 1;
$b = 2;
$c = 3;
if ($a == 1 || $b == 5 && $c == 6) echo 'true';
?>
Покажет true т. к PHP достаточно, что переменная $a == 1, но если добавить круглые скобки:
if (($a == 1 || $b == 5) && $c == 6) echo 'true';
условие не выполнится т. к переменная $c не равна 6
Круглые скобки внутри if нужны, когда условий больше двух + используется оператор ИЛИ.
Например:
<?php
$a = 1;
$b = 2;
$c = 3;
if ($a == 1 || $b == 5 && $c == 6) echo 'true';
?>
Покажет true т. к PHP достаточно, что переменная $a == 1, но если добавить круглые скобки:
if (($a == 1 || $b == 5) && $c == 6) echo 'true';
условие не выполнится т. к переменная $c не равна 6
Запомни, лучше поставить лишние скобки, чем допустить разночтение. Как компилятором, так и человеком!
https://www.php.net/manual/en/language.operators.precedence.php
можно было бы и обойтись, кмк
можно было бы и обойтись, кмк
Потому что скобки это необязательный оператор. Единственное что они делают изменяют приоритет. а для того чтобы сравнение работало с операндом И т к у него тоже высокий приоритет его операнды принято брать в скобки иначе оно не правильно считается - например если написать это выражение без скобок ( (2+ 3)>(2 &$toggle) ) то оно посчитается так как расставлены скобки а нужно так ( (2+ 3>2) &($toggle) ). Но только в одном случае скобки действительно необходимо в других можно использовать приоритеты но задумываться над этим никто не хочет и осень часто народ не думает какие там операнды и все равно пишет их со скобками так получаются лишние скобки они впринципе для программы безвредные немного запутывают правда
Похожие вопросы
- Объясните пожалуйста что делает этот код???
- Здравствуйте, каким методом лучше проверять на PHP правильность открывающихся и закрывающихся скобок в строке?
- Объясните простым языком.
- Объясните что за файл php.ini
- Какая разница между Node.js и PHP
- В чём разница языков PHP и Python?
- Объясните прицеп работы php как он работает ?
- Для чего нужны побитовые операции в PHP? Объясните мне как можно детальнее, на что хватит духу.
- Объясните мне почему для программиста важна математика. Просто я в свое время этим занимался, пришлось по учебе и работе
- Изучаю php. В книжке дан код программы, объясните для чего строка? (код внутри)
Сначала бы отработало логическое И операция вернула бы false.
Потом отработало логическое ИЛИ и при проверки первой переменой a==1 прекратило бы дальнейшую проверку и вернуло true.
То есть обязательно нужно смотреть приоритеты операций. И да в с++ нет знака $ я просто не стал менять синтаксис так как понимаю что это не с++.