Сокращенное выражение для оператора if ($ a == $ b || $ a == $ c)

Я знаю, что этот код будет работать:

echo ( $a == $b || $a == $c ) ? "Yes" : "No";

Это можно прочитать как:

если $ a равно $ b или $ a равно $ c

Есть ли способ сделать его более коротким, как:

если $ a равен $ b или $ c

Я много пробовал, в том числе и это, но все еще не повезло:

echo ( $a == ( $b xor $c ) ) ? "Yes" : "No";

4

Решение

Ты можешь использовать in_array:

var_dump(in_array($a, [$b, $c]));

с вашим примером:

echo in_array($a, [$b, $c]) ? 'Yes' : 'No';

Примечание: этот синтаксис полезен, только если у вас есть более 2 значений. Для немногих ценностей $a == $b || $a == $c делает работу хорошо и, вероятно, быстрее.

7

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

Это две альтернативы, но обе они будут выполняться дольше, чем код, который вы опубликовали, потому что они полагаются на более сложные функции.

preg_match('/^('.$b.'|'.$c.')$/',$a) === 0

in_array($a,array($b,$c)) === true

Если вы ставите условие с большей вероятностью как истинное в качестве первого выражения, в большинстве случаев PHP будет оценивать выражение как истинное и не проверять второе выражение.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector