2011-12-06 77 views
0

我想在一個包含一系列對象(主題)的對象(處理程序)中創建一個數組。該數組是處理程序的屬性,我有一個創建新主題的方法。如何在php中將對象添加到數組中?

class MyHandler (
    $TheList = array(); 
    $TempSubject = object; // class subject 

    public function AddNewSubject($information) { 
    $TempSubject = new subject($information); 
    $This->TheList [] = $TempSubject; 
    } 
) 

如果我創建如上一個新的課題,也對信息持續對象中存留內MyHandler或之後AddNewSubject兩端失去了什麼?我是PHP新手,請對任何錯誤發表評論。

回答

0

$TempSubject該對象的方法內只是一個臨時變量。但是,如果你是這樣定義的函數:

public function AddNewSubject($information) { 
    $this->TempSubject = new subject($information); 
    $this->TheList [] = $this->TempSubject; 
} 

那麼對象的屬性($this->TempSubject)將被將被存儲在$this->TheList每次但對象的副本更新。

最後,如果你要定義你的函數是這樣的:

public function AddNewSubject($information) { 
    $this->TempSubject = new subject($information); 
    $this->TheList [] =& $this->TempSubject; 
} 

你會發現$this->TheList將包含同一個對象,這將是你每次調用該函數的時間覆蓋引用的列表。

我希望有幫助。

6

它會持續下去,但你有一個錯字$This ..應該是$this

+0

這件事情重要嗎? – Ashlar

+1

是的,http://www.php.net/manual/en/language.variables.basics.php – ajreal

+0

哦,小子!搜索並替換! :) – Ashlar

0

您應該使用array_push方法,點擊此處查看: http://php.net/manual/en/function.array-push.php

+2

爲什麼? '$ array [] =「new value」;'做同樣的事情 – xil3

+1

@ xil3 $ array []'是'array_push($ array,??)'的別名,所以是的,它是一樣的。這完全是關於作者的偏好。 –

+0

@Truth我知道它是什麼,但我的觀點是,這個答案沒有增加任何價值這個問題。 – xil3

1

回答你的問題是對象將在堅持該類別

class MyHandler (
    public $TheList = array(); 

    public function AddNewSubject($information) { 
      $this->TheList[] = new subject($information); 
    } 
) 
+0

+1縮短代碼和正確答案。 – Jon

相關問題