Hoe voeg ik een object toe aan een array in php?

Ik wil een array maken binnen een object (handler) met een reeks objecten (onderwerp) in PHP. De array is een eigenschap van de handler en ik heb een methode om nieuwe onderwerpen te maken.

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

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

Als ik een nieuw onderwerp maak zoals hierboven, blijft het informatie-persistente object dan behouden binnen MyHandler of is het verloren nadat AddNewSubject is beëindigd? Ik ben nieuw in PHP dus reageer alstublieft op eventuele fouten.

0

4 antwoord

It will persist, but you have a typo $This .. should be $this

6
toegevoegd
toegevoegd de auteur ajreal, de bron
Case is belangrijk voor $ dit?
toegevoegd de auteur Ashlar, de bron
Oh jongen! zoeken en vervangen! :)
toegevoegd de auteur Ashlar, de bron

om je vraag te beantwoorden ja het object zal blijven bestaan ​​in de klas

class MyHandler (
     public $TheList = array();

     public function AddNewSubject($information) {
          $this->TheList[] = new subject($information);
     }
)
1
toegevoegd
+1 voor het verkorten van de code en het juiste antwoord.
toegevoegd de auteur Jon, de bron

$TempSubject within the object's method is only a temporary variable. If, however, you were to define your function like this:

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

then the object's property ($this->TempSubject) would be updated each time but a copy of that object would be stored in $this->TheList.

Ten slotte, als je je functie als volgt zou willen definiëren:

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

you would find that $this->TheList would contain a list of references to the same object, which would be overridden every time you call the function.

Ik hoop dat dat helpt.

0
toegevoegd

You should use the array_push method, check it here: http://php.net/manual/en/function.array-push.php

0
toegevoegd
@ xil3 $ array [] is een alias van array_push ($ array, ??) dus ja, het is hetzelfde. Het gaat echt allemaal om voorkeuren van de auteur.
toegevoegd de auteur Madara Uchiha, de bron
Waarom? $ array [] = "nieuwe waarde"; doet hetzelfde
toegevoegd de auteur xil3, de bron
@Truth Ik weet wat het is, maar mijn punt is dat dit antwoord geen enkele waarde aan deze vraag toevoegt.
toegevoegd de auteur xil3, de bron