2013-12-05 2 views
0

Я видел много вопросов об использовании || в выражениях присваивания, таких какСокращение при использовании || для сравнения (==) вместо назначения (=)

$a = $b || $c 

, но я не сталкивался с этим, так что простите меня, если это дубликат.

Можете ли вы сокращайте сравнения, используемый в заявлении, если такие, как:

if ($a == ($b || $c || $d)... 

или необходимо, чтобы записать его в полном объеме, как

if (($a == $b) || ($a == $c) || ($a == $d))... ? 

Я работаю в PHP, но вопрос будет также применяться к JavaScript

+4

Вы должны записать его полностью – adeneo

+1

Да, это должно быть написано полностью – Zeus

+1

Есть, однако, много трюков, в зависимости от того, что представляют переменные, например 'if ([b, c, d] .indexOf (a)) и т. д. или используя in_array и все остальные функции в PHP – adeneo

ответ

2

Вы можете сократить сравнение, используемый в отчете, если такие, как $a == ($b || $c || $d)

N: Выражение в скобках сначала вычисляется, т.е. ($b || $c || $d) принимает значение первого truthy значения. Давайте рассмотрим $b = 0, $c = 'foo', $d = null, тогда ($b || $c || $d) приведет к 'foo', так что в итоге вы сравните $a == $c.

Похожие: Shorthand for multiple OR expressions in if statement

(я на самом деле ответил на это по отношению к JavaScript ($a является допустимым именем переменной в JS), но это то же самое в PHP).

+0

Спасибо всем, кто ответил, я принял это как наиболее яркое, включая полезную ссылку. – terraling

3

вы не можете так аббревиатура. вам нужно сделать полный синтаксис, как в вашем последнем блоке кода. если вы хотите сократить его, вы можете поместить vars, который вы сравниваете с $a, в массив и использовать in_array(). Обычно это будет работать, но не всегда, в зависимости от того, какие значения фактически существуют. Но это не так уж хорошо, так как вы торгуете одним куском кода для другого, так что вы действительно не сокращаете код.

В качестве альтернативы рассмотрите использование switch вместо if, особенно если вам нужно сделать что-то другое, основанное на том, какое из этих условий истинно.

2

нет, вы не можете так сокращать. Если вы хотите сравнить x с большим количеством переменных, вы можете использовать цикл и итерации через переменные, которые вы сравниваете x, и выполняете одно сравнение за итерацию цикла.

+0

Если вы сравниваете x с 50 другими переменными, вы можете это сделать ... –

Смежные вопросы