2015-05-10 20 views
1
$a = new stdClass; 
$a->first = 'James'; 
$a->last = 'Doe'; 

$b = (object) [ 
    'first' => 'James', 
    'last' => 'Doe', 
]; 

echo 'Loose compare: ' . ($a == $b ? 'equal' : 'different') . PHP_EOL; // equal 
echo 'Type compare: ' . (gettype($a) == gettype($b) ? 'equal' : 'different') . PHP_EOL; // equal 
echo 'Strict compare: ' . ($a === $b ? 'equal' : 'different') . PHP_EOL; // different 

如何嚴格比較不好?更重要的是,它們可以嚴格制定一致嗎?PHP嚴格比較兩個對象是假的

+0

'$ B = $ A;回聲($ a === $ b?'equal':'不同')。 PHP_EOL;' –

回答

7

嚴格比較檢查是否$a$b完全相同對象(相同的存儲器位置)。只有這樣,才能使他們相同的(嚴格)將$a = $b;

參考見http://php.net/manual/en/language.oop5.object-comparison.php

+0

so .. the offic manual http://php.net/manual/en/language.operators.comparison.php says 「$ a === $ b相同TRUE如果$ a等於$ b,而且它們屬於同一類型。「 是否應該提及「並佔用相同的內存位置」?或者更特別的是這種情況「,如果它們是對象,那麼它們是相同的實例」 – Geo

+1

從你鏈接的文檔頁面看來,'$ a === $ b'應該對於同一類的兩個實例具有相同的屬性值。 「對象比較」頁面更精確。也許你應該報告這是一個錯誤(文檔中有一個鏈接)。 – Teyras