2015-11-04 131 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