gpt4 book ai didi

php - 使用 SplObjectStorage 作为数据映射,是否可以使用可变数组作为数据?

转载 作者:可可西里 更新时间:2023-11-01 13:21:35 26 4
gpt4 key购买 nike

在下面的代码中:

$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 的重载元素对...没有影响”

我认为发生这种情况是因为 SplObjectStorage 中的 ArrayAccess 的实现没有通过引用返回值。

有什么方法可以将 SplObjectStorage 用作数据映射,其中键是对象,值是可变数组?做这种工作还有其他可行的选择吗?

最佳答案

间接修改(即 offsetGet 返回一个引用)是最近才出现的能力。参见 the note for ArrayAccess::offsetGet . SplObjectStorage 似乎没有使用它(还没有?)。

我建议你改用直接修改:

$a = $storage[$fooB];
$a[] = 'test';
$storage[$fooB] = $a;

关于php - 使用 SplObjectStorage 作为数据映射,是否可以使用可变数组作为数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9380430/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com