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

Par*_*unt 5 php twitter object

我试图从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
            )
Run Code Online (Sandbox Code Playgroud)

注意:这不是完整的对象

Mik*_*e B 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
Run Code Online (Sandbox Code Playgroud)


Cha*_*les 5

您是否将这些数据作为JSON获取?如果是这样,请检查第二个参数json_decode,这样可以将结果作为关联数组而不是对象获取.这将允许您使用正常的循环结构,例如foreach并使用获取密钥array_keys.

如果您没有通过JSON获取此数据,则可以考虑使用Reflection来获取对象的属性.(编辑#2:我不确定这是否适用于stdClass,实际上......)