Я пытаюсь получить элемент массива по его ключу. Массив на самом деле является SolrObject, который реализует ArrayAccess, поэтому я понимаю, что я могу получить доступ к своим элементам, как в массиве.Доступ к элементу ArrayAccess напрямую
Это структура моего $ 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);
Я получаю
Если я пытаюсь итерацию $ MyObject с Еогеасп, я могу получить доступ к его элементам правильно.
Почему я не могу получить доступ к одному элементу по его ключу?
EDIT: Отвечая на @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) ""
}
Я знаю, но этот объект реализует ArrayAccess. Как я могу достичь того, что мне нужно? –
Это метод offsetGet, который вызывается, когда вы делаете что-то вроде $ solr ['xyz']. Вы пытались называть этот метод непосредственно для целей тестирования? – VolkerK
@ Russell: Да, вы можете. Если объект реализует 'ArrayAccess', он позволяет вам обращаться к объекту, подобному массиву. @David: Насколько это проблема, попробуйте выполнить тестирование с помощью 'isset ($ myobject [116809])'. Также покажите 'var_dump ($ myobject)'. У меня есть ощущение, что базовый объект не является «SolrObject» ... Я мог ошибаться, но, глядя на документы, кажется, что он должен быть другим ... – ircmaxell