2011-03-10 74 views
4

我想從twitter api中獲取當前趨勢(但是這與sorta無關)。用動態名稱遍歷一個對象的屬性

我作爲一個對象接收信息。在這種情況下,我需要訪問的某些屬性是上次更新趨勢時的日期,因此我無法對屬性名稱進行硬編碼。

這裏有一個例子櫃面我沒有解釋自己好,我怕我沒:(

stdClass Object 
(
[2011-03-09 02:45] => Array 
    (
     [0] => stdClass Object 
      (
       [promoted_content] => 
       [events] => 
       [query] => RIP Mike Starr 
       [name] => RIP Mike Starr 
      ) 

     [1] => stdClass Object 
      (
       [promoted_content] => 
       [events] => 
       [query] => Mac & Cheese 
       [name] => Mac & Cheese 
      ) 

注:這不是完整的對象

+1

您可以通過對象屬性的foreach簡單地遍歷一個對象的屬性。在你不關心的層級中使用它。 – mario 2011-03-10 02:07:59

回答

10

可以使用get_object_vars()

$fooBar = new stdClass(); 
$fooBar->apple = 'red'; 
$fooBar->pear = 'green'; 

foreach(get_object_vars($fooBar) as $property => $value) { 
    echo $property . " = " . $value . "\n"; 
} 

// Output 
// apple = red 
// pear = green 
+0

啊,非常酷,只是我需要感謝你。 – Paramount 2011-03-10 02:11:37

4

你得到這個數據JSON?如果是這樣,請the second argument to json_decode,它可以讓你得到的結果回來作爲關聯數組,而不是作爲一個對象。這將讓你使用普通的循環結構,像foreach使用array_keys獲得密鑰。

如果您沒有通過JSON獲取此數據,則可以考慮使用Reflection來獲取the properties of an object。 (編輯#2:我不知道這是否會在stdClass的或不能工作,其實...)

+0

我正在使用OAuth和數據檢索庫,所以是的,我得到它作爲JSON,但圖書館轉換它之前,我可以觸摸它。 – Paramount 2011-03-10 02:07:51

+0

在這種情況下,我的編輯!儘管Mike B對'get_object_vars'的回答可能對您更爲方便。 – Charles 2011-03-10 02:09:15