Sortenreine Apfelernte in einer Apfelplantage. S

PHP Arrays



Ideen: M. Metz, S. Lipka, K. P. Boneberger Elektronikschule Tettnang
T. Wegener, "PHP5 Grundlagen Erstellung dynamischer Webseiten", Herdt Verlag, 2008
S. Heller, "PHP 8.0 Dynamische Webseiten erstellen", Herdt Verlag, 2021


Große Datenengen speichert man in Arrays. So wie sich auf einem Feld gleiche Apfelsorten wiederholen, wiederholen sich in Arrays Werte gleichen Datentyps. Für den Zugriff verwendet man typischerweise einen Index. Mithilfe einer Schleife kann man sehr elegant auf die einzelnen Werte zugreifen.

In diesem Artikel wird der grundsätzliche Aufbau von Arrays mit Datentyp und Index erklärt. Mit Hilfe von foreach-Schleifen wird auf jeden einzelnen Wert zugegriffen.

Die Apfelplantage 🍎 Speichern großer Datenmengen eines Datentyps



Äpfel

Große Datenmengen speichert man in Arrays. So wie sich auf einem Feld gleiche Apfelsorten wiederholen, wiederholen sich in Arrays Werte gleichen Datentyps. Vermutlich hat man deshalb den Begriff Array im deutschen auch mit dem Wort Feld übersetzt.

Als Beispiel soll folgende Tabelle in einem Array gespeichert werden:
Index 0 1 2
0 Gala rot süß
1 Elstar rot fein säuerlich
2 Delicious grün süß aromatisch

Ein einzeiliges Array legt man mit dem reservierten Wort array(..) an. Die Initialisierung erfolgt durch Angabe der Werte, welche durch ein Komma getrennt werden. Der Index wird automatisch zugewiesen und beginnt immer bei Null.

<?php
$apple = array("Gala", "Elstar", "Delicious");
?>

Ein mehrdimensionales Array hat nun je nach Verschachtelung mehrere Indizes, hier zwei. Die Indizes werden auch hier automatisch zugewiesen und beginnen immer bei Null.

<?php
$apple = array(
  array("Gala", "rot", "süß"),
  array("Elstar", "rot", "sauer"),
  array("Delicious", "grün", "süß")
);
?>

Zugriff auf Arraywerte Werte anzeigen



Für den Zugriff auf eine Apfelsorte gibt man die entsprechenden Indizes in eckigen Klammern an:
<?php
echo 'Apfelsorte:'. $apple[1][0];
?>

Möchte man einen Wert ersetzen geht dies auch über den Index:
<?php
$apple[0][0]="Boskoop";
$apple[0][1]="rot";
$apple[0][2]="säurebetont";
?>

Apfelinfo 🍎

Gala ist rot und schmeckt süß.
Elstar ist rot und schmeckt sauer.
Delicious ist grün und schmeckt süß.

  • <?php
    $apple = array(
      array("Gala", "rot", "süß"),
      array("Elstar", "rot", "sauer"),
      array("Delicious", "grün", "süß")
    );
    ?>

    <p><?= $apple[0][0]?> ist <?= $apple[0][1]?> und schmeckt <?= $apple[0][2]?>.<br>
    <?= $apple[1][0]?> ist <?= $apple[1][1]?> und schmeckt <?= $apple[1][2]?>.<br>
    <?= $apple[2][0]?> ist <?= $apple[2][1]?> und schmeckt <?= $apple[2][2]?>.</p>

Apfelinfoauswahl 🍎

Wähle eine Apfelsorte.


  • <?php
    $apple = array(
      array("Gala", "rot", "süß"),
      array("Elstar", "rot", "sauer"),
      array("Delicious", "grün", "süß")
    );
    ?>

    <form method="GET" action="#formulareingabe1">
    Wähle eine Apfelsorte.<br>
    <select class="form-select" aria-label=".form-select-lg example" name="sorte">
      <option selected value="0"><?=$apple[0][0]?></option>
      <option value="1"><?=$apple[1][0]?></option>
      <option value="2"><?=$apple[2][0]?></option>
    </select>
    <button type="submit" class="btn btn-outline-primary">Mehr Info</button>
    </form>

    <p>Die Apfelsorte <?= $apple[$_GET['sorte']][0]?> ist <?= $apple[$_GET['sorte']][1]?> und schmeckt <?= $apple[$_GET['sorte']][2]?>.</p>

Zugriff auf Arraywerte mit Schleifen automatisiert auslesen



Möchte man auf ein eindimensionales Array zugreifen,verwendet man eine for-Schleife. Der Zugriff auf ein mehrdimensionales gelingt mit der verschachtelten for-Schleife:
<?php for($i=0; $i<3; $i++){?>
  <br>
  <?php for($j=0; $j<3; $j++){?>
    <?= $apple[$i][$j]?>
  <?php } ?>
<?php } ?>

Der Nachteil dieser Methode liegt darin, dass es etwas unübersichtlich ist und das die Anzahl der Einträge bekannt sein muß. Aus diesem Grund gibt es die for-each-Schleife:
<?php foreach ($apple as $ausgabe){?>
  <br>
  <?= $ausgabe[0]?>
  <?= $ausgabe[1]?>
  <?= $ausgabe[2]?>
<?php } ?>

Preisliste 📋
Sorte Farbe Geschmack kgPreis
Gala rot süß 2.7
Elstar rot sauer 2.3
Delicious grün süß 2.8
  • <?php
    $apple = array(
    array("Gala", "rot", "süß", 2.70),
    array("Elstar", "rot", "sauer", 2.30),
    array("Delicious", "grün", "süß", 2.80)
    );
    ?>
    <table class="table table-striped">
      <tr>
        <th>Sorte</th>
        <th>Farbe</th>
        <th>Geschmack</th>
        <th>kgPreis in EUR</th>
      </tr>
      <?php foreach ($apple as $ausgabe){?>
      <tr>
        <td><?= $ausgabe[0]?></td>
        <td><?= $ausgabe[1]?></td>
        <td><?= $ausgabe[2]?></td>
        <td><?= $ausgabe[3]?></td>
      </tr>
      <?php } ?>
    </table>

Apfeleinkauf 🛒

Wähle eine Apfelsorte und Menge.


  • <form method="GET" action="#formulareingabe2" class="row g-3">
      <p>Wähle eine Apfelsorte und Menge.<br>
      <select class="form-select mb-3 mt-1 col-auto" aria-label=".form-select-lg example" name="sorte">
        <option selected value="0"><?=$apple[0][0]?></option>
        <option value="1"><?=$apple[1][0]?></option>
        <option value="2"><?=$apple[2][0]?></option>
      </select>
      <input type="number" class="form-control" name="amount" min="1" max="4" step="0.5" placeholder="Menge in kg">
      <div class="mt-1 d-grid gap-2 d-sm-block d-print-none">
        <button type="submit" class="btn btn-outline-primary mb-3">in den 🛒</button>   </div>
    </form>

    <br>
    <?php if(isset($_GET['sorte'])){   $kosten=$_GET['amount']*$apple[$_GET['sorte']][3]; $wert=number_format($kosten, 2, ',', '.');?>
      <p>Menge: <?= $_GET['amount']?> kg <?= $apple[$_GET['sorte']][0]?><br>
      Preis: <?= $wert?> €</p>
    <?php }?>

Übung 1 Welche Aussage ist wahr?

Wähle die korrekten Aussagen aus.

Gegeben ist folgender Quellcode in php:
$apple = array(
  array("Gala", "rot", "süß", 2.70),
  array("Elstar", "rot", "sauer", 2.30),
  array("Delicious", "grün", "süß", 2.80)
);

Greife auf die erste Apfelsorte zu.
Wähle eine Antwort.

  1. $apple[1][1]
  2. $apple[0][1]
  3. $apple[1][0]
  4. $apple[0][0]


Greif auf den Geschmack des dritten Apfels zu.
Wähle eine Antwort.

  1. $apple[3][1]
  2. $apple[1][3]
  3. $apple[2][2]
  4. $apple[3][3]



Ändere den Geschmack von Elstar auf "aromatisch".
Wähle eine Antwort.

  1. $apple[1][3]="aromatisch"
  2. $apple[1][4]="aromatisch"
  3. $apple[1][2]="aromatisch"
  4. "aromatisch"=$apple[1][1]


Aktualisiere den Preis von Gala auf 1,90 €.
Wähle eine Antwort.

  1. $apple[0][3]=1.9
  2. $apple[1][3]=1.9
  3. $apple[1][3]=1,9
  4. $apple[0][3]="1.9"


Gib die zweite Zeile aus.
Wähle eine Antwort.

  1. foreach($apple as $ausgabe) $ausgabe[1]
  2. foreach($apple as $ausgabe) $ausgabe[2]
  3. foreach($apple as $ausgabe) $apple[1]
  4. foreach($ausgabe as $apple) $apple[1]


Gib die erste Zeile aus.
Wähle eine Antwort.

  1. for($i=0;$i<3;$i++) $apple[0][$i]
  2. for($i=0;$i<4;$i++) $apple[$i][0]
  3. for($i=0;$i<4;$i++) $apple[0][$i]
  4. for($i=0;$i<=4;$i++) $apple[0][$i]

Entspann dich erstmal ...



Australien ist ein Kontinent mit einer einzigartigen Fauna und Flora.

Der Elsey Nationalpark liegt im Norden Australiens und zeichnet sich durch warme Quellen und eine tolle Tiervielfalt aus.

Übung 2 Apfelernte

gefüllte Apfelkiste

  1. Entwirf ein Array mit 7 Apfelsorten, deren Farben, Geschmack und Preis pro kg.
  2. Gib das Array als Tabelle aus.
  3. Entwirf ein Kundenformular, in welchem der Kunde die Menge jeder Sorte angeben kann und dann bestellen kann.

Übung 3 Länder und Hauptstädte

  1. Finde die Hauptstädte von 7 asiatischen Ländern, wie bspw. Kambodscha heraus und lege ein Array mit Land, Hauptstadt, Sprache und Einwohnerzahl an.
  2. Gib alle Werte tabellarisch aus.
  3. Sortiere die Zellen nach Einwohnerzahl mit Hilfe eines Algorithmus.
Hongkong Skyline


Übung 4 Welche Aussage ist wahr?

Wähle die korrekten Aussagen aus.

Ausgabe: 1 2 3 4 5
Bestimme das zugehörige Array.
Wähle eine Antwort.

  1. $wert = array(1 2 3 4 5);
  2. $wert = 1,2,3,4,5;
  3. $wert = array(1,2,3,4,5);
  4. foreach array(1,2,3,4,5);


Ausgabe: 1, 2, 3, 4, 5,
Bestimme den Quelltext für die Ausgabe.
Wähle eine Antwort.

  1. $wert = array("1,");
  2. for($i=1;$i<=5;$i++) echo $i;
  3. for($i=1;$i<6;$i++) echo $wert[$i].', ';
  4. for($i=0;$i<5;$i++) echo $wert[$i].", ";



Ausgabe: 5 4 3 2 1 0
Bestimme den Quelltext für die Ausgabe.
Wähle zwei Antworten.

  1. for($i=5;$i>=0;$i-=1) echo $wert[$i]." ";
  2. for($i=5;$i>=0;$i++) echo $wert[$i]." ";
  3. for($i=5;$i>=0;$i--) echo $wert[$i]." ";
  4. echo '5 4 3 2 1 0';


Ausgabe: A B C D
Initialisiere das Array $wert
Wähle eine Antwort.

  1. $wert = array("A", "B", "C", "D");
  2. $wert = array(A B C D);
  3. $wert = array("A" "B" "C" "D");
  4. $wert = "A", "B", "C", "D";



Wortliste und Satzbausteine



das Array, -s Feld mit vielen Werten eines Datentyps
der Index, Indizes Wert mit dem auf einzelne Arrayelemente zugegriffen wird.
die for-Schleife, -n eine Anweisung zum Wiederholen von Programmteilen
for($i = 0; $i < 4; $i++){...}
die foreach-Schleife, -n Schleife um alle Elemente eines Arrays auszugeben foreach($i as $ausgabe){...}