我想通過它的鍵獲取一個數組的項目。該數組實際上是一個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]);
我得到空。
但如果我嘗試
echo array_key_exists(116809, $myobject);
我得到
如果我嘗試遍歷$ MyObject來在foreach,我可以正確訪問它的元素。
爲什麼我不能通過它的鍵直接訪問一個元素?
編輯: 應答到@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。我怎麼能達到我需要的? – 2010-10-27 12:56:10
這是您在做類似$ solr ['xyz']時調用的offsetGet方法。您是否嘗試過直接調用該方法用於測試目的? – VolkerK 2010-10-27 13:07:22
@Russell:是的,你可以。如果對象實現了'ArrayAccess',它確實允許你像數組一樣訪問對象。 @David:就這個問題而言,嘗試用'isset($ myobject [116809])''進行測試。另外,顯示'var_dump($ myobject)'。我有一種感覺,基礎對象不是'SolrObject' ...我可能是錯的,但看着文檔,它看起來應該是不同的... – ircmaxell 2010-10-27 13:11:32