在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::currentSplObjectStorage::getInfo

关于php - 如何通过PHP 5.4中的SplObjectStorage进行迭代时获取与当前键关联的对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21389345/

10-11 20:15