Zum Inhalt springen

PHP Basics: ArrayObject – Klasse

Motto: Make objects to work as arrays.

Beispiel:

<?php
/*Das ArrayObject kann mittels Array oder Object Parameter erstellt werden, also erzeugen wir ein Array */

$team = array(
   'teamleiter' => 'Hans Dampf',
   'vize' => 'Tommy Doof',
   'mitarbeiter' => 'Detlev Dick',
   'assistentin' => 'Hanna Ungeschickt'
);

//ArrayObject erzeugen
$teamObject = new ArrayObject($team, ArrayObject::ARRAY_AS_PROPS);

//Einen Wert ausgeben
echo $teamObject->teamleiter;

//Wert hinzufügen
$teamObject->azubi = 'Moritz Schüler';

Der zweite Parameter als „ArrayObject::ARRAY_AS_PROPS“ bedeutet, dass auf die Einträge als Eigenschaften zugegriffen werden kann (read/write). Ein Beispiel wäre $teamObject->azubi  = ‚Moritz Schüler‘; aus dem obigen Beispiel.

Das würde bei ArrayObject::ARRAY_AS_PROPS nicht so funktionieren, dass diese in einer Ausgabe des Arrays enthalten wären. Dort haben die Objekte das normale Verhalten beim Zugriff als Liste (var_dump, foreach o.ä.).

const integer STD_PROP_LIST = 1 ;
const integer ARRAY_AS_PROPS = 2 ;

Achtung bei einfachen Array Funktionen. Diese können nicht ohne Weiteres angewendet werden:

//wird nicht funktionieren
$falsch = array_values($teamObject);

//stattdessen
$teamArray = (array) $teamObject;
$richtig = array_values($teamArray);

Wichtige Funktionen:

$arrayobject = new ArrayObject(array('blau','grau','gelb'));

//append: Fügt einen neuen Wert als letztes Element hinzu. 
//Achtung: Nur benutzbar, wenn ArrayObject aus Array
$arrayobject->append('lila');

//asort: Sortiert nach Werten, Schlüssel bleiben ihrem Wert zugeordnet
$arrayobject->asort();

//natsort: Wie assort, aber natürliche Reihenfolge (z.B. "file2" vor "file11").

//getIterator(): Gibt ein ArrayIterator Objekt zurück, geeignet zum iterieren durch das Array
$iterator = $teamObject->getIterator();
while($iterator->valid()) {
  echo $iterator->curent().' hat die Funktion '.$iterator->key().'<br />';
  $iterator->next();
}

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert