两部分问题:调用Mixpanel api后,我返回如下内容
stdClass Object (
[legend_size] => 1
[data] => stdClass Object (
[series] => Array (
[0] => 2011-04-06
[1] => 2011-04-07 )
[values] => stdClass Object (
[Login loaded] => stdClass Object (
[2011-04-06] => 1
[2011-04-07] => 1
)
)
)
)
假设我将其存储在$data
中如果我这样做
$value = $data->data->values->Login loaded
我得到一个错误,因为在登录和加载之间的空间。我如何逃离这个空间?
第二个问题
一旦我弄明白了上面的问题,我可以做一些像
$value = $data->data->values->Login->$date
,
$date = '2011-05-06'
?我可以用变量代替类名吗?
谢谢。
第一个问题:$value = $data->data->values->{'Login loaded'}
or:
$key = 'Login loaded';
$value = $data->data->values->$key
第二个问题:Yes
如果你使用变量变量、{}
变量包装器等,你几乎可以使用任何东西作为变量名(包括对象成员)。
例如:
$this->$foo
${'a weird variable name'}
$object->$something->{'very weird'}
$foo = 'bar'; $$foo = 3; // $bar = 3 now.
编辑:当我们在它,这个是永远无效的:
$foo = new Foo;
$foo::bar(); // syntax error
不能访问存储在变量中的类实例的静态属性。但是,您可以这样做:
$foo = new Foo;
call_user_func(get_class($foo) . '::bar');