在PHP 5.4中,我有一个SplObjectStorage实例,在其中将对象与一些额外的元数据相关联。然后,我需要遍历SplObjectStorage的实例并检索与当前键关联的对象。我试图使用SplObjectStorage::key,但是没有用(但是在PHP 5.5中可以用)。
这是我正在尝试做的简化版本:
$storage = new SplObjectStorage;
$foo = (object)['foo' => 'bar'];
$storage->attach($foo, ['room' => 'bar'];
foreach ($storage as $value) {
print_r($value->key());
}
我真正需要的只是某种方式来检索与键关联的实际对象。据我所知,甚至不可能用数字索引和对象SplObjectStorage指向的对象手动创建一个单独的索引数组。
最佳答案
做到这一点:
$storage = new SplObjectStorage;
$foo = (object)['foo' => 'bar'];
$storage->attach($foo, ['room' => 'bar']);
foreach ($storage as $value) {
$obj = $storage->current(); // current object
$assoc_key = $storage->getInfo(); // return, if exists, associated with cur. obj. data; else NULL
var_dump($obj);
var_dump($assoc_key);
}
查看更多SplObjectStorage::current和SplObjectStorage::getInfo。
关于php - 如何通过PHP 5.4中的SplObjectStorage进行迭代时获取与当前键关联的对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21389345/