我正在尝试通过其键获取数组的项目。该数组实际上是一个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) ""
}
答案 0 :(得分:2)
我认为这是PHP Solr扩展的错误。
答案 1 :(得分:0)
您可能没有正确实现ArrayAccess方法。