2012-07-31 195 views

回答

28

in_array()確實鬆散比較($a == $b),除非你傳遞TRUE到第三個參數,在這種情況下,它確實嚴格比較($a === $b)。

語義,in_array($obj, $arr)是相同的:

foreach ($arr as &$member) { 
    if ($member == $obj) { 
    return TRUE; 
    } 
} 
return FALSE; 

...和in_array($obj, $arr, TRUE)是相同的:

foreach ($arr as &$member) { 
    if ($member === $obj) { 
    return TRUE; 
    } 
} 
return FALSE; 

...並引述什麼這實際上會檢查manual

當使用比較運算符(==)時,對象變量是compa紅色,即:如果兩個對象實例具有相同的屬性和值,並且是同一類的實例,則它們是相等的。

另一方面,當使用身份運算符(===)時,當且僅當它們引用同一個類的同一實例時,對象變量纔是相同的。

+1

太棒了,謝謝。有一個愚蠢的計時器,所以我不能接受另外5分鐘。 – yellottyellott 2012-07-31 15:32:44

0

對象始終是PHP 5+中的引用,並且只能使用clone複製(因此創建一個新對象)。

這意味着你應該可以使用in_array()

相關問題