尝试迭代PHP对象数组

尝试迭代PHP对象数组,php,arrays,loops,object,Php,Arrays,Loops,Object,我有一个方法,希望将SQL行中的输入解析为对象: function buildPictureArray($sqlRow) { $pics = []; foreach($sqlRow as $value) { extract($value); // How to do this more elegant? $newObj = new PICObject($id, $filename, $thumb . $filename, $full . $filename,

我有一个方法,希望将SQL行中的输入解析为对象:

function buildPictureArray($sqlRow) {
   $pics = [];
   foreach($sqlRow as $value) {
      extract($value); // How to do this more elegant?
      $newObj = new PICObject($id, $filename, $thumb . $filename, $full . $filename, $title, $subtitle); // These are column names I got from extract
      $pics[] = $newObj;
   }
   return $pics;
}
我的PICObject如下所示:

  Class PICObject {
    public $id;
    public $fileName;
    public $thumbLink;
    public $fullLink;
    public $title;
    public $subTitle;

    function __construct($id, $fileName, $thumbLink, $fullLink, $title, $subTitle) {
      $this->$id = $id;
      $this->$fileName = $fileName;
      $this->$thumbLink = $thumbLink;
      $this->$fullLink = $fullLink;
      $this->$title = $title;
      $this->$subTitle = $subTitle;
    }
  }
现在理想情况下,我想迭代这个$pics数组,它现在应该包含几个PICObjects,并且能够访问它的字段:

foreach($pics as $picObj) {
   echo $picObj->$fileName;
}
然而,这不起作用。那么如何做到这一点呢?(我尝试过几种方法,但都没有达到我想要的效果)

尝试
array\u push($pics,$newObj)
而不是
$pics[]=$newObj

编辑:


您可以发布您的
提取(值)
方法吗?

您必须访问不带美元符号的对象属性,例如:

foreach($pics as $picObj) {
   echo $picObj->fileName;
}

在构造函数类中,您犯了一个错误

$this->$id=$id错误

$this->id=$id是正确的


所有其他变量也一样

检查语法<代码>$this->id
$this->$id
echo$picObj->fileName
echo$picObj->$fileName它正在工作。此外,我还必须删除类中的美元符号,例如用户Phpstall提到的$this->id而不是$this->$id。这与不使用$访问对象属性相结合,解决了这个问题。