Оператор логического присваивания в переполнении стека

Кажется, в PHP нет логического оператора присваивания. Я хотел бы иметь возможность написать $a = $a || $b как $a ||= $b,

Обратите внимание, что это не то же самое, что $a |= $b, который не закорачивает когда $a оценивает true,

Есть ли такая функциональность в PHP?

0

Решение

PHP, кажется, не имеет этой функциональности. Там нет ничего в Документация оператора присваивания или в Документация логических операторов что упоминает эту функциональность. Кроме того, он не включен в комментарий с самым высоким рейтингом на странице оператора присваивания, это список, который кто-то составил из всех операторов присваивания из информации на других страницах.

0

Другие решения

Здесь нет ||= или же &&= оператор в PHP, есть некоторые языки, которые используют это (например, ) но они реализовали это по-другому.

Так что единственный способ сделать это так:

$a = $b || $c;

Вы также можете использовать ?? оператор, это означает, что если isset затем используйте.

$a = $b ?? $c;

Или присвойте ему значения в цепочке и используйте последнее как значение по умолчанию (если ни одно из предыдущих значений не равно true):

$a = $b ?? $c ?? true;

Логические операторы присваивания позволяют только хранить true или false значение и, в большинстве случаев, вы можете непосредственно поместить (и при необходимости установить) его в операторе if, чтобы сохранить строку кода.

0