簡體   English   中英

嘗試迭代對象數組PHP

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM