Php SplObjectStorage仅按实例映射

Php SplObjectStorage仅按实例映射,php,arrays,object,map,splobjectstorage,Php,Arrays,Object,Map,Splobjectstorage,我的问题是我想通过对象相等(=)来映射,而不是唯一的实例。换句话说,重构它以不抛出错误并返回映射值: $var1 = (object) [1,2,10]; $var2 = (object) [1,2,10]; $objmap = new SplObjectStorage(); $objmap[$var1] = "mapped value here"; echo $objmap[$var2]; 编辑:另外,如果我最终需要迭代SplObjectStorage对象的键以获得相等值,我想知道一种好方法

我的问题是我想通过对象相等(=)来映射,而不是唯一的实例。换句话说,重构它以不抛出错误并返回映射值:

$var1 = (object) [1,2,10];
$var2 = (object) [1,2,10];
$objmap = new SplObjectStorage();
$objmap[$var1] = "mapped value here";
echo $objmap[$var2];

编辑:另外,如果我最终需要迭代SplObjectStorage对象的键以获得相等值,我想知道一种好方法,只对对象/数组进行散列,并简单地映射到散列。

我将为对象内容实现一个散列函数;简单地说:

function getHash($obj)
{
    return md5(serialize($obj));
}

$objmap = array();
$objmap[getHash($var1)] = "mapped value here";
echo $objmap[getHash($var2)];

这是我的想法,但我觉得这有点贵。我开始觉得我需要编写自己的
内爆()