2015-11-04 85 views
0

我有,我想分析从SQL-行输入对象的方法:试图遍历对象数组PHP

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; 
} 

Howe ver,这不起作用。那么如何做到这一点? (我已经尝试了多种方法,但没有真正做了什么,我一直在寻找)

+0

检查哟你的语法。 '$ this-> id'不是'$ this - > $ id','echo $ picObj-> fileName;''不是'echo $ picObj - > $ fileName;' – check

回答

2

你必须访问,而美元符号的对象属性,例如:

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

现在正在工作。另外,我必须删除我班的美元符号,例如$ this-> id不是$ this - > $ id,如用户Phpstall所述。 – octavio

0

尝试array_push($pics, $newObj);代替$pics[] = $newObj;

编辑:

你可以发表你的extract(value)方法?

+0

它是原生的php [method](http:// php .net/manual/bg/function.extract.php) – memo

0

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

$此 - >的$ id = $ id为错误

$这个 - > ID = $ id为正确

同所有其他变量

+0

这固定它与同时访问没有$的对象属性。 – octavio