Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
de:create:array [12.12.2014 10:06]
admin
de:create:array [16.01.2015 11:50] (aktuell)
admin Ergänzung: Assoziative Arrays
Zeile 170: Zeile 170:
  
 Ä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: 16.01.2015 11:50 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