Оператор объединения с нулевым значением также можно использовать с ложными значениями, но не с нулевыми значениями?

Новый нулевой оператор объединения в PHP, безусловно, отличная функция, в чем-то сравнимая с использованием JavaScript || для получения значений по умолчанию.

Я уже читал документацию и статьи об этой фиче, но некоторые вещи мне до сих пор не совсем ясны.

1. Можно ли использовать этот оператор с любым количеством операндов? Например, будет ли это действительным?

$a = $p1 ?? $p2;

$b = $r1 ?? $r2 ?? $r3 ?? $r4 ?? $r5;

2. Что делать с ложными значениями, которые не равны нулю?

$test = false ?? 0 ?? 'test'; - что теперь будет $test? Если он не работает с ложными значениями, отличными от null, как мы можем добиться, чтобы он работал как || в JavaScript?


person Bartłomiej Zalewski    schedule 23.06.2015    source источник
comment
Если вы хотите что-то близкое к || в JavaScript, используйте сокращенный тернарный оператор ?:. Однако это не делает isset() для вас.   -  person Andrea    schedule 27.06.2015


Ответы (1)


Я создал это, которое должно ответить на ваши вопросы.

Во всяком случае

  1. Оператор может быть объединен в цепочку, и он вернет первый элемент в цепочке, который установлен, а не нуль.

  2. Согласно документации, это будет return the result of its first operand if it exists and is not NULL, or else its second operand. Следовательно, если первый операнд равен false, он вернет false.

person marcosh    schedule 23.06.2015