2015-11-04 4 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' not' $ this -> $ id', 'echo $ picObj-> fileName;' not 'echo $ picObj -> $ fileName;' – check

ответ

2

Вы должны получить доступ к атрибутам объектов без знака доллара, например:

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

Теперь он работает. Также мне пришлось удалить знаки доллара в моем классе, например. $ this-> id not $ 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 = $ идентификатор неправильно

$ this-> ID = $ идентификатор правильно

одинаковы для всех остальных переменных

+0

Это фиксировало его в сочетании с доступом к атрибутам объекта без $. – octavio

Смежные вопросы