2011-04-07 81 views
0

問題的兩個部分:調用Mixpanel API後,我返回類似這樣的Mixpanel對象PHP

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 
      ) 
     ) 
    ) 
) 

比方說,我保存這個在$數據

如果我做

$value = $data->data->values->Login loaded 

由於登錄和加載之間的空間,我得到一個錯誤。我如何逃避這個空間?

第二個問題

一旦我得到上述想通了,我可以做這樣的事情

$value = $data->data->values->Login->$date 

其中

$date = '2011-05-06' 

?我可以在一個變量中代替類名嗎?

謝謝。

回答

2

第一個問題:$value = $data->data->values->{'Login loaded'}或:

$key = 'Login loaded'; 
$value = $data->data->values->$key 

第二個問題:是

您幾乎可以使用任何作爲變量名(包括對象的成員),如果你使用的變量變量,{}變量包裝,等等。

如:

$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');