Array

Arrays werden in PHP auch Felder genannt. Vieles funktioniert ähnlich wie in Javascript.

 

In PHP werden Arrays auch Felder genannt.
Ein Array ist so eine Art Variablensammlung. Es gibt Arrays mit einem numerischen Index. Da bekommt jedes Element eine Zahl zugewiesen, über die man das Element aufrufen kann. Die Indizierung beginnt bei 0.
$tiere[0] wäre das erste Element des Arrays $tiere;

Es gibt assoziative Arrays. Da werden die Elemente über einen String aufgerufen.
$tiere["loewe"] wäre das Element "loewe" des Arrays $tiere; mehr dazu später.

Array / Feld erzeugen

Die folgenden Beispiele zeigen 3 Schreibweisen um ein Array / Feld zu erzeugen.

$artikel[0] wäre der Zugriff auf der erste Element, des Arrays $artikel

Das folgende Array hat den selbstvergebenen Namen medium und 3 Elemente. Es gibt verschiedene Notationen, um ein Array zu erstellen.

1)

$medium[0] = "Buch";
$medium[1] = "DVD";
$medium[2] = "CD";

2)

$medium = array("Buch", "DVD", "CD");

3)

$medium = ["Buch", "DVD", "CD"];

Anzeige des zweiten Elements.

echo $medium[1]; //DVD

count()

Mit count() kann man die Anzahl der Elemente eines Arrays überprüfen.

4 echo count($werte);

range()

Mit range() wird ein numerisches Array erzeugt mit den Werten der vorgebenen Zahlen. Die beiden Argumente sind: Anfangswert und Endwert. Das erste Argument darf nicht höher sein, als das zweite.

5
6
7
8
<?php
$daten = range(5,8);
echo $daten[0],"<br>";
echo $daten[1],"<br>";
echo $daten[2],"<br>";
echo $daten[3],"<br>";
?>

sort()

Sortieren

Mit sort() wird sortiert, hier alphabetisch

<form>
<Select size=4 >
<?php
$Optionen = array("Keramic", "Bilder", "Karten", "Bücher");
sort($Optionen);
echo "<Option>", $Optionen[0];
echo "<Option>", $Optionen[1];
echo "<Option>", $Optionen[2];
echo "<Option>", $Optionen[3];
?>
</select></form>
Hier wird numerisch sortiert.
100
200
300
500
<?php
$zahlen[0]=200;
$zahlen[1]=300;
$zahlen[2]=500;
$zahlen[3]=100;
sort($zahlen);
echo $zahlen[0],"<br>";
echo $zahlen[1],"<br>";
echo $zahlen[2],"<br>";
echo $zahlen[3],"<br>";
?>


list()

Werte in Variablen schreiben

Mit list(argumente) kann man die Array-Inhalte direkt in Variablen schreiben. Das ist jedenfalls einfacher als Einzelzuweisungen nach dem Schema: $va1= nirva[0]; $va2=nirva[1]; ....etc.

205893 <?php
$nirva = array(20, 58, 93);
list($va1, $va2, $va3)=$nirva;
echo $va1;
echo $va2;
echo $va3;
?>

array_unshift

Elemente am Anfang des Arrays hinzugefügen mit array_unshift();
Als Argumente werden erwartet: zuerst Arrayname, dann die Inhalte der neuen Elemente mit Kommata getrennt.

Leuchter
Wachskugeln
Buddhas
Keramic
Bilder
Karten
Bücher
<?php
$Optionen = array("Keramic", "Bilder", "Karten", "Bücher");
array_unshift($Optionen, "Leuchter", "Wachskugeln", "Buddhas");
echo $Optionen[0],"<br>";
echo $Optionen[1],"<br>";
echo $Optionen[2],"<br>";
echo $Optionen[3],"<br>";
echo $Optionen[4],"<br>";
echo $Optionen[5],"<br>";
echo $Optionen[6],"<br>";

?>


array_push

Elemente am Ende des Arrays hinzufügen mit array_push();
Als Argumente werden erwartet: zuerst Arrayname, dann die Inhalte der neuen Elemente mit Kommata getrennt. In diesem Beispiel wurde ein 2 dimensionales Array genutzt.

    $tiere["afrika"][0] = "Zebra";
    $tiere["afrika"][1] = "Löwe";

    echo $tiere["afrika"][0];


    array_push($tiere["afrika"], "Elefant", "Gnu", "Antilope"); //hinten anfügen
    echo $tiere["afrika"][2]; //Elefang
 

array_pop()

Am Ende ein Element löschen mit array_pop($Arrayname)

Bücher
6
Karten
<?php
echo array_pop($Optionen),"<br>";
echo count($Optionen),"<br>";
echo $Optionen[5],"<br>";
?>

array_shift()

Am Anfang ein Element löschen

Leuchter
5
Wachskugeln
<?php
echo array_shift($Optionen),"<br>";
echo count($Optionen),"<br>";
echo $Optionen[0],"<br>";
?>

mb_split()

String zu Array

mb_split() hat 3 Paremeter, der dritte Parameter ist optional

  1. regulärerer Ausdruck oder das Zeichen in Anführugnszeichen nach dem getrennt werden soll
  2. der String
  3. optional, Begrenzung auf eine bestimmte Anzahl

Im folgendem Beispiel werden die mit Komma getrennten Begriffe des Strings $geschirr in einzelne Elemente des Arrays $essgeschirr eingefügt.

$geschirr = "Teller, Tasse, Untertasse, Topf, Platte";
$essgeschirr = mb_split(",",$geschirr);

Wenn man nach einem geschützten Zeichen trennen will muss man es maskieren, indem man einen Backslash voran stellt. " \." beispielsweise.

Der optionale dritte Parameter erwartet eine Ganzzahl, welche die Anzahl der Arrayelemente begrenzt. Es bedeutet nicht, dass der letzte Teil des Strings nicht im Array erscheint, sondern diese Worte mit Kommas liegen alle im letzen Array Element. Bei einer Begrenzung mit 3, wäre das letzte Arrayelement "Untertasse, Topf, Platte"


explode()

String zu Array

Eine strtok() sehr ähnliche Funktion ist explode(), wo jedoch ein Array ausgegeben wird, dessen Elemente man in einer Schleife auslesen kann. Hierbei ist das erste Argument das Trennzeichen, das zweite der auszulesende Textstring.

30
02
1879
<?php
$Datum = "30.02.1879";
$Teile=explode(".",$Datum);
foreach($Teile as $Teil){
echo $Teil, "<br>";
}
?>

implode()

Array zu String

Das Gegenstück implode() wird dazu verwendet, die Elemente eines Arrays zu einem Textstring zusammenzufügen. Als erstes Argument wird ein "Trennzeichen" (hier der br Tag) und als zweites Argument der Arrayname angegeben. Wie man sieht ist hier keine Schleife erforderlich.

Sonntag
Montag
Dienstag
Mittwoch
Donnerstag
Freitag
Samstag
<?php
$Wochentage=array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
echo implode("<br>",$Wochentage);
?>

in_array()

Suchen

Suchfunktion im Array mit in_array. Es wird allerdings nur der Wert true (bzw. 1) zurückgegeben, wenn der Wert vorhanden ist. Im ersten Argument wird der Suchbegriff angegeben, im zweiten der Arrayname.

1Wachskugeln <?php
echo in_array("Wachskugeln", $Optionen);
echo current($Optionen);
?>


Assoziatives Array

Assoziative Arrays haben anstatt numerischer Indizies sogenannte Schlüssel oder keys. Das sind Strings, über die, die Elemente angesprochen werden.

Achtung Die Schlüssel müssen in doppelten Hochkommata eingefügt sein.

Achtung Die Ausgabe eines Arrayelements sollte nicht innerhalb von Strings erfolgen. Das kann zu Fehlern führen.

echo $tiere["Tiger"];

echo " ". $tiere["Tiger"];

Hier werden 3 Möglichkeiten vorgestellt ein assoziatives Array zu erstellen.

Zuweisung einzelner Werte
Video
$waren["ArtikelNr"]=1;

$waren["ArtikelName"]="Buzz Lightyear";

$waren["ArtikelGruppe"]="Video";

$waren["Preis"]=10.50;

echo " " . $waren["ArtikelGruppe"];
Arrayfunktion
Video
$sachen = array(

"ArtikelNr"=>1,

"ArtikelName"=>"Clown",

"ArtikelGruppe"=>"Video",

"Preis"=>10.50

);
echo " " . $sachen["ArtikelGruppe"];
in eckigen Klammern
10.5 €
$produkte = [

"ArtikelNr"=>1,

"ArtikelName"=>"Clown",

"ArtikelGruppe"=>"Video",

"Preis"=>10.50

];
echo " ". $produkte["Preis"] ." €";

for-each()

Assoziatives Array ausgeben

Mit einer for-each() Schleife kann man ein assoziatives Array durchlaufen und alle Werte ausgeben lassen. Im folgendem Beispiel wird aus dem Array $produkte der Schlüssel in der Variblen $name und der Wert in der Varibalen $wert gespeichert und ausgegeben.

    foreach ($Artikel as $name => $wert) {
        echo "$name, $wert<br>";
    }

ArtikelNr, 1
ArtikelName, Clown
ArtikelGruppe, Video
Preis, 10.5

extract()

Diese benannten Elemente lassen sich einfach in Variablen umwandeln und zwar mit dem Schlüsselwort extract($arrayname).

1Buzz LightyearVideo10.5 <?php
extract($waren);
echo $ArtikelNr;
echo $ArtikelName;
echo $ArtikelGruppe;
echo $Preis;
?>

isset()

Assoziative Arrays lassen sich auch mit isset() überprüfen.

    $allowed_files = [
        'image/jpeg' => 'jpg',
        'image/gif' => 'gif',
        'image/png' => 'png',
        'image/webp' => 'webp'
    ];
    $type = "image/jpeg";
    if (isset($type)) {
        echo "Der Datentyp ist vorhanden";
    }
Der Datentyp ist vorhanden

Mehrdimensionale Arrays

Mehrdimensionale Arrays muß man sich wie die Spalten und Reihen einer Tabelle vorstellen.

<?php
$Daten[0][0]="Walter Hirsch";
$Daten[0][1]="Glummersbach";
$Daten[0][2]="Am Huberweg 6";
$Daten[1][0]="Hubert Wankelmeier";
$Daten[1][1]="Moosbach";
$Daten[1][2]="Hupfenstr. 20";
?>
Alternative Schreibweise mittels Arrayfunktion.
Liesel Fuchsheimer <?php
$Adressen[0]=array("Alois Gamshuber","Waldesruh","Pfaffenweg 3");
$Adressen[1]=array("Liesel Fuchsheimer","Stöcklingen","Winklstr. 4");
echo $Adressen[1][0];
?>
Folgende Schreibweise ist auch möglich.
Am Gottesacker 3 <?php
$Mitglieder =array(0=>array("Werner Holdenberg", "Feldhausen", "Am Gottesacker 3"),
1=>array("Bärbel Schlunz", "Glummersbach", "Finkenteich 4")
);
echo $Mitglieder[0][2];
?>
Kombiniert man in mehrdimensionalen Arrays numerische Indicies mit Schlüsseln, hat man eine datensatzähnliche Struktur.
Fichtelheim <?php
$Teilnehmer[0]["Name"]="Walter Gamshuber";
$Teilnehmer[0]["Wohnort"]="Floddenberg";
$Teilnehmer[0]["Strasse"]="Pfeifenstr. 3";
$Teilnehmer[1]["Name"]="Friedel Wachsmann";
$Teilnehmer[1]["Wohnort"]="Fichtelheim";
$Teilnehmer[1]["Strasse"]="Grüner Weg 6";
echo $Teilnehmer[1]["Wohnort"];
?>
Siehe auch foreach Schleife für Array
hier eine weitere Möglichkeit, ein mehrdimensionales Array zu erzeugen
Walter Gamshuber49
Friedel Wachsmann20
Gunter Freihorn40
Dieter Grünschuber35
Klaus Grabenrot54
<?php
$id{0} = array("Name" => "Walter Gamshuber", "Hits" => 49);
$id{1} = array("Name" => "Friedel Wachsmann", "Hits" => 20);
$id{2} = array("Name" => "Gunter Freihorn", "Hits" => 40);
$id{3} = array("Name" => "Dieter Grünschuber", "Hits" => 35);
$id{4} = array("Name" => "Klaus Grabenrot", "Hits" => 54);

$i=0;
while($i<5){
echo $id[$i]["Name"].$id[$i]["Hits"]."<br>";
$i++;
} ?>

anstatt
$id{0} = array("Name" => "Walter Gamshuber", "Hits" => 49);
ist auch folgende Schreibweise möglich
$id[0] = array("Name" => "Walter Gamshuber", "Hits" => 49);

 

Webdesign / PHP / mySQL / Tipps
Copyright © Michael Albers
www.pastorpixel.de