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
作爲數據映射,其中鍵是對象而數值是可變數組?做這種工作還有其他可行的選擇嗎?