我的问题是我想按对象相等(==)映射,而不是唯一的实例。换句话说,重构它不会抛出错误并返回映射值:
$var1 = (object) [1,2,10];
$var2 = (object) [1,2,10];
$objmap = new SplObjectStorage();
$objmap[$var1] = "mapped value here";
echo $objmap[$var2];
编辑:另外,如果我最终需要迭代SplObjectStorage对象的键以获得相等性,我想要知道一种好方法来只是哈希对象/数组并简单地映射到哈希
答案 0 :(得分:1)
我会为对象内容实现散列函数;像这样简单的东西:
function getHash($obj)
{
return md5(serialize($obj));
}
$objmap = array();
$objmap[getHash($var1)] = "mapped value here";
echo $objmap[getHash($var2)];