Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
de:create:array [12.12.2014 10:06] adminde:create:array [01.12.2019 11:12] (aktuell) admin
Zeile 11: Zeile 11:
 // Ein Array anlegen // Ein Array anlegen
 $a = array('eins', 'zwei', 'drei'); $a = array('eins', 'zwei', 'drei');
 +</code>
 +
 +Statt der Schreibweise ''array()'' ist auch eine Kurzschreibweise mit eckigen Klammern möglich. Die Funktion ist identisch.
 +
 +<code php>
 +// Ein Array anlegen mit eckigen Klammern
 +$a = ['eins', 'zwei', 'drei'];
 </code> </code>
  
Zeile 170: Zeile 177:
  
 Ähnlich hilfreich sind ''array_merge()'' (Vereinigungsmenge) und ''array_intersect()'' (Schnittmenge). Ähnlich hilfreich sind ''array_merge()'' (Vereinigungsmenge) und ''array_intersect()'' (Schnittmenge).
 +
 +
 +===== Assoziative Arrays =====
 +
 +Gewöhnliche Arrays sind einfach eine Liste von Elementen, wobei jedes Element eine eindeutige Position hat. Diese Position wird durch den Index (''0'', ''1'', u.s.w) bezeichnet. Der Index wird auch als //Schlüssel// bezeichnet.
 +
 +Bei assoziativen Arrays gibt man die Schlüssel explizit vor. In PHP wird die Zuordnung eines Wertes zu einem Schlüssel durch die Zeichenfolge ''%%=>%%'' erreicht. Man __kann__ als Schlüssel natürlich den bekannten Index verwenden -- die Arrays ''$a'' und ''$b'' im folgenden Beispiel sind gleich.
 +
 +<code php>
 +$a = array(
 +  'eins',
 +  'zwei',
 +  'drei'
 +);
 +
 +$b = array(
 +  0 => 'eins',
 +  1 => 'zwei',
 +  2 => 'drei'
 +);
 +</code>
 +
 +Aber als Schlüssel sind nicht nur Zahlen, sondern auch Strings erlaubt. Im folgenden Array wird damit z.B. für eine Reihe von Wissensfragen (vom Typ "Auswahl") die korrekte Antwort (Antwortcode) definiert.
 +
 +<code php>
 +$c = array(
 +  'AB01' => 2,
 +  'AB02' => 1,
 +  'BB01' => 5
 +);
 +</code>
 +
 +
 +Um das Element eines assoziativen Arrays auszulesen, wird der Schlüssel einfach in eckigen Klammern angegeben:
 +
 +<code php>
 +$x = $c['AB01'];
 +// oder auch
 +$key = 'AB01';
 +$x = $c[$key];
 +</code>
 +
 +Besonders hilfreich für die Arbeit mit assoziativen Arrays ist die PHP-interne Funktion ''[[http://php.net/manual/de/function.array-keys.php|array_keys()]]'' und die FOR-Schleife ''[[http://php.net/manual/de/control-structures.foreach.php|foreach]]''. Der folgende PHP-Code prüft für mehrere Fragen, ob die korrekte Antwort gegeben wurde ([[:de:create:points|Punkte für Antworten zählen]]).
 +
 +<code php>
 +$c = array(
 +  'AB01' => 2,
 +  'AB02' => 1,
 +  'BB01' => 5
 +);
 +foreach ($c as $label=>$correct) {
 +  if (value($label) == $correct) {
 +    html('<p style="color: green">Die Antwort auf '.$label.' war korrekt.</p>');
 +  } else {
 +    html('<p style="color: red">Die Antwort auf '.$label.' war falsch.</p>');
 +  }
 +}
 +</code>
 +
 +Eine reguläre FOR-Schleife kann man durch Einsatz von ''array_keys()'' verwenden:
 +
 +<code php>
 +$c = array(
 +  'AB01' => 2,
 +  'AB02' => 1,
 +  'BB01' => 5
 +);
 +$fragen = array_keys($c);
 +for ($i=0; $i<count($fragen); $i++) {
 +  $label = $fragen[$i];
 +  $correct = $c[$label];
 +  if (value($label) == $correct) {
 +    html('<p style="color: green">Die Antwort auf '.$label.' war korrekt.</p>');
 +  } else {
 +    html('<p style="color: red">Die Antwort auf '.$label.' war falsch.</p>');
 +  }
 +}
 +</code>
  
  
de/create/array.txt · Zuletzt geändert: 01.12.2019 11:12 von admin
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-Share Alike 4.0 International
Driven by DokuWiki