如何在没有foreach循环的情况下访问Array内的Object Element

时间:2012-01-23 10:50:42

标签: php zend-framework

我正在尝试学习使用Zend Framework,我现在面临以下问题。 我正在从数据库中读取特定帖子的一些信息。我使用Datamapper和Models。

$postMapper = new Application_Model_PostMapper();
$post = new Application_Model_Post();
$details = $postMapper->find($postID, $post);
$this->view->postDetail = $details; 

在我的视图中,我使用foreach($ this-> postDetail作为$ value)来阅读所有帖子信息。但我现在想知道,如果我还可以在没有foreach的情况下访问信息。我只需要控制器中的电子邮件地址,就不明白为什么我需要一个foreach。但我怎么能访问这个? Zend_Debug带有以下结果:

array(1) {
[0] => object(Application_Model_Post)#87 (27) {
["_email":protected] => string(10) "test@testmail.com"

这听起来像一个非常愚蠢的问题,但我找不到一种方法来读出控制器内的电子邮件地址。有人可以给我一个暗示吗?

3 个答案:

答案 0 :(得分:0)

在Application_Model_Post类中,您将创建一个访问器方法以获取私有值。

所以创建一个像这样的方法。

public function getEmail(){
    return $this->_email;
}

老实说,如果您正确使用数据映射器,我认为您已经拥有这些方法。

答案 1 :(得分:0)

当您通过fetchAll从Model / db获取数据时,例如:

$result = $this->fetchAll($select);

你可以

$result->toArray();

//access like array
$result[0]->some_col_1;
$result[0]->some_col_2;

$result[1]->some_col_1;
$result[1]->some_col_2;
...

答案 2 :(得分:0)

其中一个应该有效:

  • 如果$ details返回一个数组:$email = $details['email']; or =$details[0]['email'];
  • 如果$ details返回一个对象:$email = $details->email;