直接访问ArrayAccess项

时间:2010-10-27 12:53:27

标签: php

我正在尝试通过其键获取数组的项目。该数组实际上是一个SolrObject,它实现了ArrayAccess,所以我知道我可以像在数组中那样访问它的项目。

这是my myobject的结构:

SolrObject Object
(
    [116809] => SolrObject Object
    (
        [title] => Array
        (
            [0] => First value
        )

        [description] => Array
        (
            [0] => Second value
        )

    )

    [591978] => SolrObject Object
    (
        [title] => Array
        (
            [0] => Third value
        )

        [description] => Array
        (
            [0] => Forth value
        )
    )
)

所以,如果我尝试

var_dump($myobject[116809]);

我得到了NULL。

但如果我尝试

echo array_key_exists(116809, $myobject);

我得到 1

如果我尝试使用foreach迭代$ myobject,我可以正确访问其元素。

为什么我不能通过密钥直接访问一个元素?

修改 回答@ircmaxell,这是var_dump:

object(SolrObject)#219 (50) {
  [116809]=>
  object(SolrObject)#220 (2) {
    ["title"]=>
    array(1) {
      [0]=>
      string(43) "First value"
    }
    ["description"]=>
    array(1) {
      [0]=>
      string(82) "Second value"
    }
  }
  [591978]=>
  object(SolrObject)#221 (2) {
    ["title"]=>
    array(1) {
      [0]=>
      string(104) "Third value"
    }
    ["description"]=>
    array(1) {
      [0]=>
      string(95) "Fourth value"
    }
  }
}

这是var_dump($ myobject-> getPropertyNames())的结果;

array(2) {
  [0]=>
  string(0) ""
  [1]=>
  string(0) ""
}

2 个答案:

答案 0 :(得分:2)

我认为这是PHP Solr扩展的错误。

答案 1 :(得分:0)

您可能没有正确实现ArrayAccess方法。