Teil von  SELFPHP   Teil von  Praxisbuch  Teil von  Datentypen
Letztes Update: 16.08.2005 17:53:45


Navigation

Seite News *

Seite Startseite
Seite Über SELFPHP
Seite Werbung
Seite Kontakt
Seite Forum *
Seite Download *
Seite SELFPHP Banner *
Seite SELFPHP in Buchform
Seite Newsletter *
Seite Impressum

 
* Link führt ins Internet



 

Arrays




Ein Array in PHP ist im eigentlich Sinne eine geordnete Abbildung. Eine Abbildung ist ein Typ der Werte auf Schlüssel abbildet. Dieser Typ ist auf mehrere Arten optimiert, so dass Sie ihn auf verschiedene Weise benutzen können:
• als reales Array
• als Liste (Vektor)
• als Hash-Tabelle
• als Verzeichnis
• als Sammlung
• als Stapel (Stack)
• als Warteschlange (Queue)
• uvm.

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 mit Hilfe des Sprachkonstrukts array() erzeugt werden. Es benötigt eine bestimmte Anzahl von Kommagetrennten Schlüssel => Wert Paaren.

Ein Schlüssel ist entweder eine Zahl vom Typ integer oder ein string. Wenn ein Schlüssel die Standard-Darstellung einer integer Zahl ist, wird es als solche interpretiert werden:
• "8" wird als 8 interpretiert
• "08" als "08" interpretiert


Wert

Der Wert eines Array Eintrags 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
        )

)




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 der eckigen Klammer-Syntax

Sie können ein bestehendes Array 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 nichtnegativer 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
)



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 existieren eine Vielzahl von nützlichen Funktionen um mit Arrays zu arbeiten. Einige davon werden wir im Abschnitt 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-Skripten 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 enthält eintrag 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 <LinkPraxisOpen>Arrays<LinkPraxisClose>.





 


Objekte
 






© 2001-2005 E-Mail SELFPHP - Damir Enseleit, info@selfphp.deImpressumKontakt
© 2005 E-Mail PHP5 Praxisbuch - Matthias Kannengiesser, m.kannengiesser@selfphp.de