2010-10-30 92 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;`