PHP Object属性没有与echo语句一起出现

时间:2015-01-29 02:48:29

标签: php arrays oop

我在显示对象的属性时遇到问题。这让我很难过。我在网上做了一些搜索,包括手册,但我真的不确定我的代码有什么问题。我相信我打电话的方式是正确的。顺便说一句,这是我的代码的一部分:

print_r($this->data());
echo ' pwd:'.$this->data()->pwd;

第一行显示

Array ( [0] => stdClass Object ( [pwd] => MyPass) )

我的第二行代码显示

 pwd:

我不知道哪个部分是错的。我只想显示属性但无法获取对象的属性。谁能帮我解释一下这个?

提前谢谢。

3 个答案:

答案 0 :(得分:0)

<强>问题

$this->data()->pwd;

你正在调用方法和财产......据我所知你不能这样做。

您只需使用$this->pwd

即可

http://php.net/manual/en/language.oop5.properties.php

答案 1 :(得分:0)

这就是你如何在php中回显一个对象,在我的例子中我创建了一个数组,将对象添加到数组中,对数组进行编码,然后最终用数组中的对象回显出来。

$posts= array();
 class Item {
   public $title = "";
   public $firstName = "";
   public $lastName = "";
   public $email = "";
   public $id = "";

}

$e = new Item();        
    $e->title = $title;
    $e->firstName  = $firstName;
    $e->lastName = $lastName;
    $e->email = $email;
    $e->id = $id;
    array_push($posts, $e);
json_encode($posts);
echo json_encode($posts);

答案 2 :(得分:0)

$this->data()是一个数组,也就是你看到数组的原因。键0的第一个元素是standardclass对象,它具有属性pwd。所以你可以像

那样访问它
$data = $this->data(); 
echo $data[0]->pwd;

如果你有最新的PHP版本(5.5+),你可以这样做

echo $this->data()[0]->pwd;