Кажется, в PHP нет логического оператора присваивания. Я хотел бы иметь возможность написать $a = $a || $b
как $a ||= $b
,
Обратите внимание, что это не то же самое, что $a |= $b
, который не закорачивает когда $a
оценивает true
,
Есть ли такая функциональность в PHP?
PHP, кажется, не имеет этой функциональности. Там нет ничего в Документация оператора присваивания или в Документация логических операторов что упоминает эту функциональность. Кроме того, он не включен в комментарий с самым высоким рейтингом на странице оператора присваивания, это список, который кто-то составил из всех операторов присваивания из информации на других страницах.
Здесь нет ||=
или же &&=
оператор в PHP, есть некоторые языки, которые используют это (например, Рубин) но они реализовали это по-другому.
Так что единственный способ сделать это так:
$a = $b || $c;
Вы также можете использовать ??
оператор, это означает, что если isset
затем используйте.
$a = $b ?? $c;
Или присвойте ему значения в цепочке и используйте последнее как значение по умолчанию (если ни одно из предыдущих значений не равно true):
$a = $b ?? $c ?? true;
Логические операторы присваивания позволяют только хранить true
или false
значение и, в большинстве случаев, вы можете непосредственно поместить (и при необходимости установить) его в операторе if, чтобы сохранить строку кода.