if ($var == ($var1 || $var2))
{
...
}
我正在考慮使用這個,但我確定它是否有效,並且似乎沒有檢查的地方。
從邏輯上來說,我似乎一致,但我不確定,而且我也沒有什麼可以在附近進行測試。
如果有效,其他主流語言還支持這種結構。這是否是有效的PHP語法?
編輯:比較是有效的,但不是我想的方式。
我想要做的是實際上我剛剛發現的in_array()函數。
if ($var == ($var1 || $var2))
{
...
}
我正在考慮使用這個,但我確定它是否有效,並且似乎沒有檢查的地方。
從邏輯上來說,我似乎一致,但我不確定,而且我也沒有什麼可以在附近進行測試。
如果有效,其他主流語言還支持這種結構。這是否是有效的PHP語法?
編輯:比較是有效的,但不是我想的方式。
我想要做的是實際上我剛剛發現的in_array()函數。
您的代碼在語法上是有效的,但語義可能不是您想要的。
因爲$var1 || $var2
是一個boolean expression始終得到真正或假。然後將$var
與該布爾表達式的結果進行比較。所以$var
總是比較true或false而不是$var1
或$var2
(這就是你可能已經預料到的)。所以它不是($var == $var1) || ($var == $var2)
的簡寫。現在
因爲你已經注意到自己,in_array
是一個解決這個問題,如果你不想寫這樣($var == $var1) || ($var == $var2)
表情,尤其是當你有你要比較值的任意數目:
in_array($var, array($var1, $var2))
即相當於:如果您需要
($var == $var1) || ($var == $var2)
一個strict comparison(使用===
而不是==
),第三個參數設置爲真:
in_array($var, array($var1, $var2), true)
現在相當於:
($var === $var1) || ($var === $var2)
+1有更好的解釋。 – Sarfraz 2010-07-23 18:40:27
是,修正後的版本是有效的語法:
if ($var == ($var1 || $var2))
的問題是,這是什麼意思?
它會將表達式($var1 || $var2)
的結果(將爲布爾值)與值$var
進行比較。
而且,如上所述,php -l file.php
會告訴你是否有任何語法錯誤。
編輯:
考慮一下:
$var1 = 1;
$var2 = 2;
echo var_dump(($var1 || $var2));
結果是:
bool(true)
。所以它是有效的? – chustar 2010-07-23 18:24:48
@chustar是的,它是有效的。但它不同於'if($ var == $ var1 || $ var == $ var2)' – cbednarski 2010-07-23 18:47:07
您可以使用命令PHP -l filename.php通過命令行來檢查語法錯誤。
正如George Marian所說,它缺少一個右括號,因此會引發語法錯誤。然而,它是有效的,所以我不能看出它是你不確定的邏輯OR構造本身。它用於幾種語言,包括javascript。
您更正的示例是有效的,並且將爲TRUE是$ var是TRUE並且$ var1或$ var2是TRUE ..或。如果$ var,$ var1和$ var2全都是FALSE
爲什麼不試試呢? – 2010-07-23 18:23:25
*(tipp)*運行'php -l file.php'會欺騙你的php文件,並通知你任何錯誤。 – Gordon 2010-07-23 18:24:50
@丹尼爾這並不一定意味着它很容易確定它在做什麼。我正期待用'php -l file.php'來回答這個問題,更正後的內容爲 – 2010-07-23 18:25:35