2010-10-30 83 views
2

所以事情是,我是OOP PHP的新手,我似乎無法找到答案如何從Object數組中檢索特定值。如何檢索對象數組值?

所以我來說我的請求,用戶的類和方法的find_by_sql:

$getAct = User::find_by_sql($sql); 

迴應,我得到的是:

Array 
(
    [0] => User Object 
     (
      [id] => 6 
      [permissions] => 0 
      [email] => [email protected] 
      [password] => 918f358a5cdf01e63d4609063d9A2bfec57f8455 
      [first_name] => Name 
      [last_name] => Surname 
      [city] => City 
      [gender] => m 
      [birth_date] => 1980-02-02 
      [act_code] => AAAAAAAAAAAAAAA 
     ) 

) 

所以基本上我的問題是我怎麼能[act_code]值設置爲我的變量? 如果我會使用非靜態方法,它會很容易,因爲我可以調用$ obj-> act_code。 但是,我如何從靜態方法調用做同樣的事情呢?

回答

1

你要做

$getAct = User::find_by_sql($sql); 
$actCode = $getAct[0]->act_code; 

或更詳細的

$getAct = User::find_by_sql($sql); // returns an array 
$user = $getAct[0];    // assign first element in array to $user 
$actCode = $user->act_code;   // read act_code member from User Object 

你可以通過你的結果轉儲看,$getAct包含一個元素的數組(由[0]because Arrays are indexed with zero-based keys所示)。元素是用戶Object

access/mutate/call Object members/methodsT_OBJECT_OPERATOR->)。由於$getAct[0]將返回該對象的句柄,因此您可以通過->get_act獲取該屬性。

+1

感謝您的詳細解答。由於我是新來的,我不太清楚OOP周圍的所有東西:) – arma 2010-10-30 10:49:18

0

要第一個數組元素的成員變量act_code的值賦值給一個變量:

$act_code = $getAct[0]->act_code; 
0

我不知道你使用的ORM,但如果你想檢索只有一條記錄,只是限制它應該返回一個User對象,而不是一個User對象的數組。

$user = User::find_first_by_sql($sql); 
$act = $user->act_code;`