Не делай ту же ошибку, что и я. Адрес объекта может отличаться, в то время как объект одинаков (т.е. spl_object_hash возвращает одинаковый идентификатор для обоих объектов).
Например, я написал этот тест:
$a = $b = new StdClass;
$objects = [$a, $b];
var_dump(spl_object_hash($a), spl_object_hash($b));
foreach ($objects as $object1);
var_dump(spl_object_hash($a), spl_object_hash($b));
foreach ($objects as &$object2);
var_dump(spl_object_hash($a), spl_object_hash($b));
Как и ожидалось, идентификатор, возвращаемый функцией spl_object_hash(), совпадает с $ a, $ b и объектами в $ objects. Но адрес объектов в $ objects не совпадает с адресом $ a и $ b:
string(32) "000000007fbf1856000000002722d91d"
string(32) "000000007fbf1856000000002722d91d"
string(32) "000000007fbf1856000000002722d91d"
string(32) "000000007fbf1856000000002722d91d"
string(32) "000000007fbf1856000000002722d91d"
string(32) "000000007fbf1856000000002722d91d"