[英]Trying to iterate array of objects PHP
我有一种方法,希望将来自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;
}
但是,这不起作用。 那么该怎么做呢? (我已经尝试了几种方法,但是没有真正做我想要的东西)
您必须访问不带美元符号的对象属性,例如:
foreach($pics as $picObj) {
echo $picObj->fileName;
}
尝试array_push($pics, $newObj);
而不是$pics[] = $newObj;
编辑:
可以发布您的extract(value)
方法吗?
在构造函数类中,您犯了一个错误
$ this-> $ id = $ id错误
$ this-> id = $ id是正确的
所有其他变量相同
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.