2010-08-31 86 views
0

有人可以請詳細解釋這些if語句在做什麼?解釋php if statment

這三個===在第一個符號中表示什麼?第二個表示單個的&是什麼意思?

感謝

$aProfile = getProfileInfo($iId); 
    if($aProfile === false) 
     return false; 

    if(!((int)$aProfile['Role'] & $iRole)) 
     return false; 
+1

爲什麼downvote?有很多*新手* PHP開發人員與'=='和'==='混淆。 – shamittomar 2010-08-31 17:03:08

回答

8

===測試類型安全的相等性。

'3' == 3將返回true,但'3' === 3不會,因爲一個字符串和一個整數。同樣,null == 0將返回true,但null === 0不會; 10.00 == 10將返回true,但10.00 === 10不會。

&是按位AND運算符。如果均爲,則從原始的兩個位掩碼設置相應的位,它返回一個位掩碼。

例如:

$x = 5; 
$y = 17; 
echo $x & $y; 

使得1被呼應。 $x...000101,$y...010001。在中設置的唯一一位都是最右邊的那個,所以你得到...000001,這就是1.

+5

我最喜歡的是:'1.0 === 4/4'是錯誤的......'1 === 4/4'是真的......(當然,1.0 == 4/4是真的)...(它是我最喜歡的原因是'1.5 === 6/4'是真的,所以師有時會返回一個浮點數,其他時候是一個int ...) – ircmaxell 2010-08-31 17:02:15

+1

@ircmaxell:看起來很奇特,但它並不是唯一的PHP也沒有什麼與PHP實現有關的。這只是PHP'==='能夠暴露底層存儲機制。 '4/4'的結果不需要浮點存儲,因此不會被使用。 – webbiedave 2010-08-31 17:28:27

+0

@webbiedave:哦,我知道。但這絕對不是我期望會發生的事情(我會假設師總是返回一個浮點數)。我並不是說有什麼「錯誤」,只是需要注意,因爲它最初可能會引起混淆(如果使用'==='或輸入檢查('is_float')... – ircmaxell 2010-08-31 18:19:11

3

這裏有一個很好的指導PHP運營商:

http://www.tuxradar.com/practicalphp/3/12/3

參見位運算符一節的&信息。

+0

不錯的鏈接! 與==(相等)相比,===(相同)運算符很少使用,但它有時可能會有用。爲了確保清楚,如果兩個變量保持相同的值並且它們是相同的類型,那麼它們只有相同。 – webdad3 2010-08-31 16:56:05

+0

謝謝,傑夫。然而,應該注意的是,===運算符確實做了初學者期望的==(它檢查身份和類型的相等性......所以1 === true是false,而1 == true是true) 。對於初學者來說,在使用==運算符的任何頻率之前仔細看看所有可能的真實性陳述是非常重要的,否則它們可能會遇到不易立即解決的問題。 – treeface 2010-08-31 17:00:05