6
在下面的代码:使用SplObjectStorage作为数据映射,你可以使用可变数组作为数据吗?
$storage = new \SplObjectStorage();
$fooA = new \StdClass();
$fooB = new \StdClass();
$storage[$fooA] = 1;
$storage[$fooB] = array();
$storage[$fooA] = 2;
$storage[$fooB][] = 'test';
我希望$storage[$fooA]
是1
,它是。我也希望$storage[$fooB]
为array('test')
,事实并非如此。这也触发一个通知,上面写着“SplObjectStorage重载元素的间接修改有没有效果...”
我觉得出现这种情况是因为ArrayAccess
在SplObjectStorage
实现不通过引用返回值。
有什么方法可以使用SplObjectStorage
作为数据映射,其中键是对象而数值是可变数组?做这种工作还有其他可行的选择吗?