Programmieren mit php und mySQL (Arrays) - Guru 2.0
Programmieren mit php und mySQL (Arrays)

Programmieren mit php und mySQL (Arrays)

Nach zwei eher leichteren Themen werde ich diesesmal Deinen Kopf zum Rauchen bringen. Arrays sind eines der schwierigsten Themen in der Programmierung. Da uns aber Arrays viele Möglichkeiten und Flexibilität bieten, sind sie auch die mächtigsten Verbündeten des Programmieres. Daher solltest Du mit ihnen auch nicht auf Kriegsfuss stehen, sondern sie wirklich beherrschen. Legen wir also los und begeben uns in die Tiefen der Programmierung mit den Arrays.

Arrays

Was sind eigentlich Arrays? Am Anfang hast Du Variable kennengelernt. Mit ihnen kannst Du Werte speicherm, dass ist klar. Aber leider kann man immer nur genau einen Wert in einer Variablen ablegen. Arrays sind eigentlich nichts anderes wie Variable. Sie haben aber zusätzlich einen Index. Damit kannst Du mehrere Werte in einer Variablenliste speichern.

Wenn Du jetzt die 5 Farben Rot, Grün, Blau, Gelb und Rosa speichern willst, kannst Du natürlich fünf Variable anlegen und diese verwenden. Das ist aber nicht sehr flexibel und praktisch. Besser ist ein Arrays: Du legst einmal die Variable fest und kannst dann über einen Index auf diese Werte zugreifen.

Oben siehst Du wie so ein Array numeriert wird. Dadurch hast Du auch die Möglichkeit diese Variable entweder mit Schleifen zu durchlaufen oder auch mit dem Index direkt ein einzelnes Element anzusprechen. Du musst nur aufpassen, denn in fast allen Programmiersprachen beginnt der Index bei 0, und nicht wie wir es gewohnt sind bei 1. Daher ist der Index immer um eins kleiner als die Position des Elements. Das erste Element hat also Index 0, das zweite Index 1, und so weiter.

Erstellen eines Arrays

Es gibt zwei Arten wie Du ein Array erstellen kannst, entweder über den Befehl array() oder über den Array-Bezeichner.

array()

Gibt ein, den Parametern entsprechendes, Array zurück

Syntax

array($arg1, $arg2, …, $arg#);

Parameter

  • $arg (mixed)
    Der Wert des Array-Elements

Rückgabewert

Der Rückgabewert ist ein Array.

Beispiele

[php light=”true”]$farben = array("Rot", "Gruen", "Blau", "Gelb", "Rosa");[/php]

[php light=”true”]$farben[] = "Rot";
$farben[] = "Gruen";
$farben[] = "Blau";
$farben[] = "Gelb";
$farben[] = "Rosa";[/php]

[php light=”true”]$farben[0] = "Rot";
$farben[5] = "Gruen";
$farben[8] = "Blau";
$farben[9] = "Gelb";
$farben[] = "Rosa";[/php]

Bei den ersten beiden gezeigten Beispiele vergeben den numerischen Index selbständig, sie beginnen bei 0 und erhöhen für jedes Element den Index um 1. Im dritten Beispiel siehst Du, wie man einen Index direkt vergeben kann. Wobei in der letzten Zeile wieder ein automatischer Index verwendet wurde. php verwendet in diesem Fall die Indexnummer 10.

Um den Inhalt eines Arrayelements abzurufen, benötigst Du nur die passende Indexnummer. Damit kannst Du beispielsweise das Element 6 mit dem Befehl $farben[5] abrufen. Die Indexnummer darf natürlich auch eine Variable oder auch eine Berechnung sein. Sie muss als Resultat nur einen ganze positive Zahl liefern.

Übung 4.1

Fangen wir auch gleich mit der ersten Übung an. Du erstellst ein Arrays mit den Farbnamen rot, blau, gelb, schwarz, rosa und lila. Danach gibst Du es mit einer Schleife aus. In jeder Zeile steht eine Farbe und davor eine Numerierung, also 1. Farbe: rot. Aber zuerst selber probieren und erst dann den Code anschauen.

[php collapse=”true”]<?php
/******************
* einfaches, numerisches Arrays
* mit formatierten Zahlen
* Dateiname: uebung_4_1.php
* Funktion: Aufbau eines Arrays und zeilenweise ausgeben
* erstellt am: 31. Mai 2009, 17:22
* Copyright: Clemens Gull
*/
//Basiswerte festlegen
$farben = array(‘rot’, ‘blau’, ‘gelb’, ‘schwarz’, ‘rosa’, ‘lila’);

//Array ausgeben
for($i = 0; $i < 6; $i++) {
echo ($i + 1).". Farbe: ".$farben[$i]."<br />";
}
?>[/php]

Bei dem Beispiel hast Du jetzt mit einem festen Wert für die Anzahl gearbeitet. Dies ist zwar ganz gut, aber immer kannst Du die Anzahl nicht ur Designtime bestimmen. Es muss also eine Möglichkeit geben, die Anzahl der Elemente in einem Arrays zur Runtime heraus zu finden.

count()

Zählt die Elemente eines Arrays und gibt die Anzahl zurück

Syntax

count($array);

Parameter

  • $array (mixed)
    Das Array, dessen Elemente gezählt werden sollen

Rückgabewert

Der Rückgabewert ist eine Zahl vom Typ int mit der Anzahl der Element.

Beispiele

[php light=”true”]$farben = array("Rot", "Lila", "Blau", "Gelb", "Rosa);
echo count($farben)." Elemente";[/php]

Als Alias-Befehl kann auch sizeof($array) statt count() verwendet werden. Beachte, dass die Anzahl der Elemente immer um eins größer ist, als der letzte Index. Dies gilt natürlich nur bei Arrays mit fortlaufendem Index.

Und gleich zu dem neuen Befehl eine Übung.

Übung 4.2

Ändere den Code aus der vorherigen Übung ab. Jetzt darf in der Vorschleife kein Literalwert vorkommen. Ersetze diesen durch den neuen Befehl. Zusätzlich änderst Du die Ausgabe auf beispielsweise 1. Farbe von 6 Farben: rot. Achte bei Deinem Code auf eine zeisparende Variante. Mit “zeitsparend” ist nicht gemeint, dass Du so schnell als möglich tippen sollst sondern der Computer so wenig Befehle und Berechnungen als möglich durchführen soll.

[php collapse=”true”]<?php
/******************
* einfaches, numerisches Arrays
* mit formatierten Zahlen
* Dateiname: uebung_4_2.php
* Funktion: Aufbau eines Arrays und zeilenweise ausgeben
* erstellt am: 31. Mai 2009, 17:25
* Copyright: Clemens Gull
*/
//Basiswerte festlegen
$farben = array(‘rot’, ‘blau’, ‘gelb’, ‘schwarz’, ‘rosa’, ‘lila’);

//Array ausgeben
$anzahl = count($farben);
for($i = 0; $i < $anzahl; $i++) {
echo ($i + 1).". Farbe von ".$anzahl." Farben: ".$farben[$i]."<br />";
}
?>[/php]

Bis jetzt haben wir numerische Arrays kennengelernt. Du kannst Dir sicher schon einige Dinge vorstellen, um sie einsetzen zu können. Aber nur mit Ziffern als Index zu arbeiten ist zwar bei einfachen Auflistungen schon immens praktisch. Aber oft wäre es noch besser, wenn man mit klingenden Bezeichnungen, statt mit Indexzahlen arbeiten kann. Dafür gibt es die nächste Variante an Arrays.

Assoziative Arrays

Sobald ein Array keine Zahl als Index hat, sondern Text verwenden, nennt man sie assoziativ oder auch Hash-Array. An sich ist es bei php nicht so wichtig zwischen numerischen und assoziativen Arrays zu unterscheiden, den für die Programmiersprache sind sie sehr ähnlich. Für Dich als Programmierer solltest Du aber trotzdem eine strenge Unterscheidung treffen, denn die Zugriffsarten auf die beiden Arrays ist schon unterschiedlich.

Die Definition von assoziativen Arrays erfolgt sehr ähnlich wie oben gezeigt, Du musst nur den Schlüssel extra mitgeben.

[php light=”true”]$person = array("name" => "Guru", "beruf" => "Programmierer", "alter" => 39);[/php]

Der Zugriff auf die Elemente erfolgt natürlich auch über den Schlüssel.

[php light=”true”]echo $person["name"];[/php]

Php ist bei den Schlüsseln des Arrays nicht sehr sensibel. Du könntest die Anführungsstriche weglassen, sie sind nur notwendig, falls Du Leerzeichen oder Sonderzeichen verwendest. Ich habe mir aber angewöhnt immer Anführungszeichen zu schreiben, denn so erkenne ich immer sofort ob es ein numerisches oder assoziatives Arrays ist. Du siehst zusätzlich im obigen Beispiel, dass Arrays nicht auf einzelne Datentypen beschränkt sind. Du kannst die verschiedensten Typen in den einzelnen Elementen speichern.

Arrays durchlaufen

Natürlich denkst Du dir jetzt, dass haten wir schon: In der Übung sind wir ja durch das Array durchgelaufen und haben jedes Element ausgegeben. Ich habe Dir aber versprochen, dass wir noch eine zusätzliche Schleife kennenlernen werden und jetzt ist es soweit.

foreach()

Durchläuft ein Array und gibt die Elemente aus

Syntax

foreach($array as $temp)

Parameter

  • $array (mixed)
    Ein zu durchlaufendes Array
  • $temp (mixed)
    Variable, welche die Elementwerte aufnimmt

Beispiele

[php light=”true”]$farben = array("Rot", "Gruen", "Blau", "Gelb", "Rosa");
foreach($farben as $temp) {
echo $temp."<br/>";
}
[/php]

Natürlich funktioniert dies nicht nur für numerische Arrays, sondern auch für Hash-Arrays. Hier ändert sich aber die Syntax ein wenig.

Syntax

foreach($array as $key=>$value)

Parameter

  • $array (mixed)
    Ein zu durchlaufendes Array
  • $key (mixed)
    Variable, welche den Schlüssel des Elements aufnimmt
  • $value (mixed)
    Variable, welche den Wert des Elements aufnimmt

Beispiele

[php light=”true”]$person = array("name" => "Guru", "beruf" => "Programmierer", "alter" => 39);
foreach($person as $key => $value) {
echo "Schluessel: <em>".$key."</em> hat den Wert: <em>".$value."</em><br/>";
}[/php]

Jetzt hast Du fast alles für einfache Array-Operationen kennengelernt. Eines fehlt Dir aber noch: Das denken in mehr als einer Dimension.

Mehrdimensionale Arrays

Eindimensonale Arrays sind ja nicht so schwer, oder? Aber wie sieht es mit zweidimensionalen aus? Wenn Du es Dir als Array in einem Arrayelement vorstellst geht auch das ganz einfach.

[php light=”true”]$farben["kalt"] = array("blau", "silber", "gold");
$farben["warm"] = array("rot", "gelb", "orange");
$farben["neutral"] = array("weiss", "schwarz");

echo $farben["warm"][1]."<br />";

foreach($farben["kalt"] as $key => $value) {
echo $key." -> ".$value."<br />";
}
[/php]

Du siehst: Es ist ganz einfach! Du nimmst einfach die bekannten Befehle und kombinierst sie. Und schon steht wieder eine Übung an.

Übung 4.3

Nimm den Code aus dem vorhergenden Beispiel. Überlege ob Du die Definition des Arrays nicht mit den Bezeichnern, sondern nur mit dem Befehl array() durchführen kannst?

[php collapse=”true”]<?php
/******************
* mehrdimensionale Arrays
* mit formatierten Zahlen
* Dateiname: uebung_4_4.php
* Funktion: Aufbau eines mehrdimensionalen Arrays
* erstellt am: 31. Mai 2009, 17:52
* Copyright: Clemens Gull
*/
//mehrdimensionales Array erstellen
$farben = array(
"kalt" => array("blau", "silber", "gold"),
"warm" => array("rot", "gelb", "orange"),
"neutral" => array("weiss", "schwarz")
);
//Ausgabe eines Elements
echo $farben["warm"][1]."<br />";

//Ausgabe aller Element der Farbe "kalt"
foreach($farben["kalt"] as $key => $value) {
echo $key." -> ".$value."<br />";
}
?>[/php]

Natürlich war diese Übung ein Kinderspiel für Dich.

Übung 4.4

Diesmal musst Du das gesamte Gelernte anwenden. Versuche das Array $farben nur mit Schleifen als unsortierte Liste auszugeben. Unsortierte Listen bestehen aus dem <ul> und den <li> Tags. Natürlich verwendest Du keine Zahlen, sondern nur foreach(), denn Du programmierst ja elegant und flexibel und nicht statisch und quick and dirty.

[php collapse=”true”]<?php
/******************
* mehrdimensionale Arrays
* mit formatierten Zahlen
* Dateiname: uebung_4_4.php
* Funktion: Ausgabe eines mehrdimensionalen Arrays
* erstellt am: 31. Mai 2009, 18:03
* Copyright: Clemens Gull
*/
//mehrdimensionales Array erstellen
$farben = array(
"kalt" => array("blau", "silber", "gold"),
"warm" => array("rot", "gelb", "orange"),
"neutral" => array("weiss", "schwarz")
);

//Array ausgeben
foreach($farben as $key => $array) {
//erste Ebene ausgeben
echo "<ul><li>".$key."</li><ul>";
//Elemente ausgeben
foreach($array as $value) {
echo "<li>".$value."</li>";
}
echo "</ul></ul>";
}
?>[/php]

Damit sind wir mit den Arrays fast fertig. Alle Befehle wie Elemente hinzufügen, entfernen oder sortieren, oder Arrays zusammenfügen und all diese Dingen wirst Du erfahren, wenn wir sie das erste Mal einsetzen. Jetzt steht nur mehr die Hausübung aus:

Übung 4.5: “Hausübung: Arrays”

Wir wollen uns diesmal ein wenig mit Photos beschäftigen. Wir haben folgende Bilder:

  • Rom
    • Index: 0
      • Name: Petersdom
      • Datum: 20.04.09
      • Zeit: 10:12
      • Datei: rom_01.jpg
    • Index: 1
      • Name: Park
      • Datum: 20.04.09
      • Zeit: 13:40
      • Datei: rom_02.jpg
    • Index 2:
      • Name: Mönch
      • Datum: 21.04.09
      • Zeit: 9:23
      • Datei: rom_03.jpg
  • Paris
    • Index: 0
      • Name: Louvre
      • Datum: 18.10.09
      • Zeit: 18:03
      • Datei: paris_02.jpg
    • Index: 1
      • Name: Pohtographie
      • Datum: 18.10.09
      • Zeit: 9:17
      • Datei: paris_01.jpg
    • Index: 2
      • Name: Unendlichkeit
      • Datum: 20.10.09
      • Zeit: 12:12
      • Datei: paris_03.jpg
    • Index: 3
      • Name: Arc de triomphe
      • Datum: 19.10.09
      • Zeit: 14:39
      • Datei: paris_04.jpg

Diese wollen wir logisch in ein mehrdimensionales Array ablegen. Danach werden es wieder als unsortierte Liste ausgegeben, dafür darfst Du aber nur foreach-Schleifen verwenden.

Übung 4.6: “Hausübung: Arrays erweitern”

Nimm den Code der Übung 4.5 und erweitere in so, dass nach der Ausgabe ein Feld “Bewertung” bei jedem Photo angefügt wird und dies mit dem Wert -1 initialisiert ist. Verwende dazu eine Schleife. Danach gibst Du das ganze Array wieder als unsortierte Liste aus. Verwende für alle Ausgaben nur foreach-Schleifen.

In eigener Sache

Schreib ruhig, dass Du die Übungen machst und auch wie es Dir dabei geht. Der Kurs kann für Dich ein riesiger Erfolg werden, wenn Du mir eine Rückmeldung gibst. Denn dann kann ich die weiteren Artikel Deinen Wünschen anpassen.
Trotz meiner Vermutung, dass ich es heute nicht schaffe, gibt es trotzdem die Fortsetzung des Kurses. Morgen wirst Du dann etwas über die nächste Gruppe der Schleifen erfahren.

Information

Diese Artikelserie ist mit dem Tag phpMySQL@Kurs versehen. Damit kannst Du schnell alle Teile des Kurses finden: https://www.guru-20.info/tag/phpMySQL@Kurs

Startseite bzw. Inhaltsverzeichnis des Kurses

Es wurde ein Kommentar zu diesem Beitrag geschrieben.

  • Jaeckel

    Super tolles Tutorial für Anfänger. Sehr detailreich und einfach erklärt. Einziges Manko wäre vielleicht ein konkretes Beispiel wofür man überhaupt Arrays braucht. Wäre ich Anfänger und hätte keine Ahnung, würde ich immer zuerst nach dem Sinn von dem ganzen Fragen.

    Ich hoffe ihr versteht was ich meine =)

Blogheim.at Logo
Diese Website verwendet Cookies - nähere Informationen dazu finden Sie in unserer „Datenschutzerklärung“. Klicken Sie auf „Ich stimme zu“, um Cookies zu akzeptieren und unsere Webseite zu besuchen, oder klicken Sie auf „Cookie-Einstellungen“, um Ihre Cookies selbst zu verwalten.