На некоторых языках вы можете сделать
$a = $b OR $c OR die("no value");
То есть OR будет короткозамкнуто, только оценивая значения слева направо, пока не найдет истинное значение. Но, кроме того, он возвращает фактическое значение, которое было оценено, а не только true.
В приведенном выше примере, в PHP, $a будет значением 1, если либо $a, либо $b являются недопустимыми значениями, или оно будет die.
Так написал функцию first, которая будет использоваться как
$a = first($a, $b, die("no value"));
который возвращает значение либо $a, либо $b. Но он не замыкается - он всегда будет die.
Существует ли короткое замыкание OR в PHP, которое возвращает фактическое значение?
Edit: Некоторые хорошие ответы на пример, который я дал, но я думаю, что мой пример не совсем то, что я имел в виду. Позвольте пояснить.
$a = func1() OR func2() OR func3();
Где каждая из этих функций действительно действительно интенсивно вычисляется, поэтому я хочу только один раз оценить каждое выражение. И для первого, чтобы вернуть истинное значение, я хочу, чтобы фактическое значение сохранялось в $a.
Я думаю, что мы можем исключить запись функции, потому что она не будет замыкаться. И ответ условного оператора будет оценивать каждое выражение дважды.