SELFPHP

SELFPHP-Druckversion
Original Adresse dieser Seite:
http://www.selfphp.de/praxisbuch/praxisbuchseite.php?site=89&group=21
© 2001-2017 E-Mail SELFPHP OHG, info@selfphp.de
© 2005-2017 E-Mail PHP5 Praxisbuch - Matthias Kannengiesser, m.kannengiesser@selfphp.de


Arrays


Ein Array in PHP ist im eigentlichen Sinne eine geordnete Abbildung. Eine Abbildung ist ein Typ, der Werte auf Schlüssel abbildet. Dieser Typ ist auf mehrere Arten optimiert, sodass Sie ihn auf verschiedene Weise benutzen können:

und vieles mehr.

Da Sie ein weiteres PHP-Array als Wert benutzen können, ist es recht einfach, Baumstrukturen zu simulieren und Verschachtelungen vorzunehmen.


Angabe mit array()

Ein Array kann mithilfe des Sprachkonstrukts array() erzeugt werden. Es benötigt eine bestimmte Anzahl von Komma-getrennten Schlüssel/Wert-Paaren.

Ein Schlüssel ist entweder eine Zahl vom Typ integer oder ein String. Wenn ein Schlüssel die Standarddarstellung einer Integer-Zahl ist, wird es als solche interpretiert werden:


Wert

Der Wert eines Arrayeintrags kann ein beliebiger Datentyp sein.


Schlüssel

Falls Sie einen Schlüssel weglassen, wird das Maximum des Integer-Indizes genommen und der neue Schlüssel wird dieses Maximum + 1 sein. Das gilt auch für negative Indizes, da ein Integer negativ sein kann. Ist zum Beispiel der höchste Index -6, wird der neue Schlüssel den Wert -5 haben. Falls es bis dahin keine Integer-Indizes gibt, wird der Schlüssel zu 0 (Null). Falls Sie einen Schlüssel angeben, dem schon ein Wert zugeordnet wurde, wird dieser Wert überschrieben.

Wenn Sie true als Schlüssel benutzen, wird dies als Schlüssel vom Typ integer 1 ausgewertet. Benutzen Sie false als Schlüssel, wird dies als Schlüssel vom Typ integer 0 ausgewertet. Die Benutzung von NULL als Schlüssel führt dazu, dass der Schlüssel als leerer String gewertet wird. Verwenden Sie einen leeren String als Schlüssel, wird ein Schlüssel mit einem leeren String und seinem Wert erzeugt oder überschrieben. Das entspricht nicht der Verwendung von leeren Klammern.

Sie können keine Arrays oder Objekte als Schlüssel benutzen. Der Versuch wird mit einer Warnung enden: Illegal offset type.

// Schlüssel ist entweder ein string oder integer
// Wert kann irgendetwas sein.
array( [Schlüssel =>] Wert, ...)

Hier einige Beispiele:

<pre>
<?php
$arrays = array (
"Fruechte" => array ("a"=>"Kirsche", "b"=>"Birne"),
"Zahlen" => array (1, 2, 3, 4, 5, 6),
"Autos" => array ("Audi", 5 => "Mercedes", "BMW")
);
print_r($arrays);
?>
</pre>

Ausgabe
Array
(
[Fruechte] => Array
  (
    [a] => Kirsche
    [b] => Birne
  )

  [Zahlen] => Array
  (
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
  )

  [Autos] => Array
  (
    [0] => Audi
    [5] => Mercedes
    [6] => BMW
  )

)
{PSP}Automatischer Index mit array()

<pre>
<?php
$meinarray = array( 10,
    20,
    30,
    40,
    50,
    60,
    70,
    4=>1,
    5=>1,
    6=>13
  );
print_r($meinarray);
?>
</pre>

Ausgabe
Array
(
  [0] => 10
  [1] => 20
  [2] => 30
  [3] => 40
  [4] => 1
  [5] => 1
  [6] => 13
)


Auf 1 basierter Index mit array()

<pre>
<?php
$monate = array(1 => 'Januar', 'Februar', 'März');
print_r($monate);
?>
</pre>

Ausgabe
Array
(
  [1] => Januar
  [2] => Februar
  [3] => März
)


Erzeugen/Verändern mit eckigen Klammern

Sie können ein bestehendes Arrays durch explizites Zuweisen von Werten verändern. Weisen Sie dem Array Werte zu, indem Sie den Schlüssel in eckigen Klammern angeben. Sie können den Schlüssel auch weglassen. In diesem Fall schreiben Sie einfach ein leeres Klammerpaar ("[]") hinter den Variablennamen.

// Schlüssel ist entweder ein String oder ein nicht-negativer Integer
// Wert kann irgendetwas sein.
$arr[Schlüssel] = Wert;
$arr[] = Wert;

Beispiel

<pre>
<?php
$monate = array(1 => 'Januar', 'Februar', 'März');
$monate[4] = "April";
$monate[] = "Mai";
print_r($monate);
?>
</pre>

Ausgabe
Array
(
  [1] => Januar
  [2] => Februar
  [3] => März
  [4] => April
  [5] => Mai
)
{PSP}Falls das Array bis dahin nicht existiert, wird es erzeugt. Das ist also eine alternative Syntax, um ein Array zu erzeugen. Um einen bestimmten Wert zu ändern, weisen Sie diesem einfach einen neuen Wert zu.

Beispiel

<pre>
<?php
$personen[0] = "VW";
$personen[1] = "BMW";
$personen[2] = "OPEL";
print_r($personen);
?>
</pre>

Ausgabe
Array
(
  [0] => VW
  [1] => BMW
  [2] => OPEL
)

Sollten Sie ein Schlüssel/Wert-Paar entfernen wollen, benutzen Sie unset().

Beispiel
<pre>
<?php
$personen[0] = "VW";
$personen[1] = "BMW";
$personen[2] = "OPEL";

// Löschen
unset ($personen[1]);
print_r($personen);
?>
</pre>

Ausgabe
Array
(
  [0] => VW
  [2] => OPEL
)


Nützliche Funktionen

Es existiert eine Vielzahl von nützlichen Funktionen, um mit Arrays zu arbeiten. Einige davon werde ich im Abschnitt 3.10 »Arrays« gesondert behandeln.

Beispiel

<?php
// Array
$daten[0] = 100;
$daten[1] = 300;
$daten[2] = 500;
$anzahl = count($daten);
// Ausgabe (3)
echo $anzahl;
?>


Schreibweisen und ihre Besonderheiten

Warum ist $daten[eintrag] falsch? – Sie sollten immer Anführungszeichen für einen assoziativen Index eines Arrays benutzen. Zum Beispiel sollten Sie $daten['eintrag'] und nicht $daten[eintrag] benutzen. Aber warum ist $daten[eintrag] falsch? Sicher ist Ihnen folgende Syntax in einigen PHP-Skripts bereits begegnet:

<?php
$daten[eintrag] = "Matze";
// Ausgabe – Matze
echo $daten[eintrag];
?>

Es ist falsch, funktioniert aber. Warum ist diese Schreibweise falsch? Der Grund ist, dass dieser Code eine undefinierte Konstante eintrag enthält anstatt eines Strings 'eintrag', beachten Sie die Anführungszeichen. PHP könnte in Zukunft Konstanten definieren, die unglücklicherweise für Ihren Code den gleichen Namen verwenden. Es funktioniert, weil die undefinierte Konstante in einen String mit gleichem Namen umgewandelt wird. Sprich, PHP nimmt an, dass Sie eintrag wörtlich gemeint haben, wie den String 'eintrag', aber vergessen haben, die Anführungszeichen zu setzen. Daher ist die folgende Schreibweise zu bevorzugen:

<?php
$daten['eintrag'] = "Matze";
// Ausgabe – Matze
echo $daten['eintrag'];
?>

Hinweis: Noch mehr rund um das Thema Arrays erfahren Sie im Abschnitt 3.10 »Arrays«.