代码之家  ›  专栏  ›  技术社区  ›  David Morales

直接访问arrayaccess项

php
  •  2
  • David Morales  · 技术社区  · 14 年前

    我正试图通过数组的键来获取它的项。数组实际上是一个solrobject,它实现了array access,所以我理解我可以像在数组中那样访问它的项。

    这是我的$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]);
    

    我得到空值。

    但如果我尝试

    echo array_key_exists(116809, $myobject);
    

    我得到

    如果我尝试用foreach迭代$myObject,就可以正确地访问它的元素。

    为什么我不能通过一个元素的键直接访问它?

    编辑: 回答@ircmaxell,这是var_转储:

    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 回复  |  直到 13 年前
        1
  •  2
  •   David Morales    13 年前

    我认为这是php solr扩展的一个bug。

        2
  •  0
  •   cweiske agentofuser    14 年前

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