2011-03-10 73 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