日記
参照を持つオブジェクトや配列の比較 解決編Edit

参照を持つオブジェクトや配列の比較で書いた、

$foo =& new stdclass();
$foo->foo =& $foo;
if ($foo === $foo) {
echo 'equal';
} else {
echo 'not equal';
}

というコードが実行できない件、PHPコードレベルでの解決策を思いついた。

$foo =& new stdclass();
$foo->foo =& $foo;
if (serialize($foo) === serialize($foo)) {
echo 'equal';
} else {
echo 'not equal';
}

なら動作する。確かPHPのどこかのバージョンで、参照を含むオブジェクトや配列のシリアライズが正常に動作するようになったはず。古いバージョンだとダメかもしれないけど。

Published At2006-02-16 00:00Updated At2006-02-16 00:00