尝试迭代PHP对象数组
我有一个方法,希望将SQL行中的输入解析为对象:尝试迭代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,
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。这与不使用$访问对象属性相结合,解决了这个问题。