2013-09-22 53 views
0

我想做一個快速檢查,看看用戶是否有權查看頁面,所以我有這樣的功能,只是簡單地返回用戶訪問級別時調用,並作出一個變量,但想知道如何寫if聲明...PHP如果變量肯定是價值或價值然後

這是我到目前爲止有:

if($uac_check == "Owner" OR "Admin") { 

    echo "You have Access"; 

} else { 

    echo "No access for you!"; 

} 

有沒有人能幫助嗎?

回答

5

您需要再次測試$uac_check的值。

if($uac_check == "Owner" or $uac_check == "Admin") { 

布爾運算符像orand需要對他們兩邊的布爾值。當你有像$ uac_check ==「Owner」這樣的表達式時,它會計算一個真或假的值,也就是所謂的「布爾」值。另一方面你有$uac_check。除非它們爲空,空或零,否則大多數變量在作爲布爾值進行轉換時將評估爲true。這可能會給您帶來不希望的結果。

請注意,我將OR運算符重新編寫爲or。兩者都是有效的,||也是如此。

最後一個注意事項 - 您可以使測試更具體,以避免PHP中的「誤解」。 PHP對類型非常寬泛,所以它會告訴你"1" == 10 == false是真的,當1個字符和1號不是同一個東西時,也不是0和false是相等的。您可以通過使用===運算符來避免類似這樣的錯誤,該運算符將同時檢查值類型。這可能是非常重要的,特別是對於某些函數可以返回0和錯誤的兩種非常不同的含義。它被稱爲identical運營商。您可以在Comparison Operators頁面的PHP手冊中閱讀更多關於比較的內容。

+0

工作過一種享受,謝謝!做「OR」和「||」有什麼區別? – AaronHatton

+0

@AaronHatton - 我將這個添加到我的答案中。短版 - 沒有區別。 –

+0

+1描述..這真的很棒 –

0

像這樣的事情

if($uac_check == "Owner" || $uac_check =="Admin") { 

    echo "You have Access"; 

} else { 

    echo "No access for you!"; 

} 
3

我想你想ternary operator

$access = ($uac_check == "Owner" || $uac_check == "Admin") ? 'You have Access' : 'No access for you!'; 
echo $access; 
+0

這將是完美的,但我打算的內容是HTML而不是隻有一行,無論如何,謝謝! – AaronHatton

+0

你可以使用html字符串創建php變量,並將其添加到訪問中。 – JTC

+1

我知道,但是我試圖保持我的代碼儘可能乾淨和可讀性,如果我需要稍後進行編輯,或者如果我被公共汽車撞倒,並且有人接管。無論如何謝謝你! – AaronHatton