使用动态名称遍历对象的属性

时间:2011-03-10 02:01:46

标签: php object twitter

我正试图从twitter api获取当前的趋势(但这无关紧要)。

我收到的信息是一个对象。在这种情况下,我需要访问的一些属性是上次更新趋势时的日期,因此我无法对属性名称进行硬编码。

这是一个例子,我没有很好地解释自己,我担心我没有:(

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
            )

注意:这不是完整的对象

2 个答案:

答案 0 :(得分:12)

您可以使用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

答案 1 :(得分:5)

您是否将此数据作为JSON获取?如果是这样,请查看the second argument to json_decode,这样可以将结果作为关联数组而不是对象获取。这将允许您使用常规循环结构,例如foreach并使用array_keys获取密钥。

如果您没有通过JSON获取此数据,可以考虑使用Reflection抓取the properties of an object。 (编辑#2:我不确定这是否适用于stdClass,实际上......)