2014-04-17 46 views
0

我想了解這個對象,但我無法弄清楚一個簡單的事實。如果count方法顯示公共屬性,並且結果是傳遞數組中的鍵的數量。在關聯數組的情況下,當我嘗試訪問一個鍵,如公共財產沒有找到。也許我誤解了界面。PHP中的ArrayObject如何工作?

//example 
$currentDate = getdate(); 

//applying print_r() we can see the content 
$objectDate = new ArrayObject(); 

//verifying the public properties- result is 11 
$objectDate->count(); 

//but can't access keys like public properties 
$objectDate->hours; 
+1

減,因爲這是「我懶得看文檔」的問題。 –

+0

除了你必須使用'['hours']',你需要'''objectDate-> hours;'前面的''''。 – Jurik

+0

@RafałWalczak,你是否閱讀過文檔?如果你問我,這很不清楚。 Upvoting,因爲這是一個有趣的問題,因爲Rafal是不正確的;) – Luceos

回答

2

這樣的類實現ArrayAccess接口,所以你可以寫:

$objectDate['hours'] 

用方括號表示法,但不帶箭頭[->]之一。

+0

好吧!謝謝!我現在看到我的問題 – artgento

3

您可以通過將ArrayObject::ARRAY_AS_PROPS標誌的ArrayObject構造函數訪問數組項爲屬性(->):

//example 
$currentDate = getdate(); 
print_r($currentDate); 

// create ArrayObject from array, make entries accessible as properties (read and write). 
$objectDate = new ArrayObject($currentDate, ArrayObject::ARRAY_AS_PROPS); 

// verifying the public methods - result is 11 
print_r($objectDate->count()); 
print "\n"; 

// accessing entries like public properties 
print_r($objectDate->hours); 
+0

嗯,這更好,謝謝 – artgento