Haumis wbb hilfe (http://haumis-wbb-hilfe.de/wbb2/index.php)
- ...:::Trainingscenter-wbb2:::... (http://haumis-wbb-hilfe.de/wbb2/board.php?boardid=75)
-- php (http://haumis-wbb-hilfe.de/wbb2/board.php?boardid=80)
--- Variable als arrays (http://haumis-wbb-hilfe.de/wbb2/thread.php?threadid=2061)


Geschrieben von haumi am 10.04.2012 um 21:54:

  Variable als arrays

In den meisten Fällen haben wir es bei Variablen mit arrays zu tun.
Darum hier der Versuch das array mal etwas näher zu bringen.
Wie kann man sich ein Array vorstellen?
Ein Adventskalender wäre z. B. so ein array.
Er besteht aus einem Behältnis mit 24 Türchen, die von 1 - 24 beschriftet sind.
Will man nun den Inhalt hinter dem 6. Türchen erhalten, so muss man sich den Adventskalender nehmen und das 6te Türchen öffnen.

In php würde das so aussehen:

$Adventslalender - ist das Behältnis mit 24 Einträgen
[6] ist das Türchen.

Um also den Inhalt des 6ten Eintrags zu erhalten und in der Variablen Eintrag6 abzuspeichern schreibt man:
$Eintrag6 = $Adventslalender[6]

Einen kleinen Schönheitsfehler hat das Ganze und der führt auch oft zu Missverständnissen und das ist folgender:
Wärend wir bei allen Aufzählungen mit 1 beginnen, so beginnt in einen array die Zählung bei 0.
Der Kalender hat die Türchen 1 - 24 und das array die Einträge 0 - 23
Beide haben also 24 Türchen /Einträge nur die Zählung ist etwas unterschiedlich - man muss sich dran gewöhnen.

Nun basteln wir uns mal ein array zusammen.
In den meisten Fällen werden wir die arrays als Datenbankabfragen erhalten.
Um jedoch hier mal etwas zu experimentieren, basteln wir uns selbst mal eins zusammen und bringen da mal alles Mögliche ein.
Es gibt verschiedene Möglichkeiten ein array zu erstellen, die einfachste ist die Funktion array()

$feld = array(1,2,3); // wir erstellen ein array mit 3 Integer-Einträgen (0,1,2)

Unser array sieht so aus:

$feld[0] - 1
$feld[1] - 2
$feld[2] - 3

Wir fügen einem array weitere Felder hinzu, indem wir dem arraynamen mit einen leeren, eckigen Klammerpaar einen weiteren Wert zuweisen.
php legt automatisch als "name" die nächst höhere Ziffer an (hier also 3)

$feld[] = ( "Gustav" ); //wir fügen an der nächsten Stelle (3) eine Zeichenkette hinzu

unser array sieht nun so aus:

$feld[0] - 1
$feld[1] - 2
$feld[2] - 3
$feld[3] - Gustav

Man kann natürlich auch einen Platz bestimmen:

$feld[h] = true; //an der stelle h fügen wir den Wahrheitswert true ein


$feld[0] - 1
$feld[1] - 2
$feld[2] - 3
$feld[3] - Gustav
$feld[h] - 1

Hie stellt sich nun ein Phänomen ein.
Statt einer Ziffer taucht hier pöltzlich ein Buchstabe auf ($feld[h]).
Für php ist das kein Problem und wir stellen fest, das die Feldnamen numerisch indiziert sein können aber auch assoziativ - also Zeichenketten enthalten können.

setzen wir noch eins oben drauf und fügen dem array ein weiteres array hinzu:

$feld[] = array(8,"eins",true); // an der nächsten numerischen Position fügen wir ein array ein

$feld[0] - 1
$feld[1] - 2
$feld[2] - 3
$feld[3] - Gustav
$feld[h] - 1
$feld[4] - Array

da wir die eckige Klamer bei $feld leer lassen, verwendet php automatisch den nächst höheren Integerwert - nach der 3 also die 4.

das folgende kleine php-Programm erzeugt uns unsere Eingaben und bringt sie zur Anzeige:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
<?
$feld = array(1,2,3);
$feld[] = ("Gustav"); 
$feld[h] = true; 
$feld[] = array(8,"eins",true);

foreach($feld AS $uber => $inhalt) { 
	echo $uber . "  -  ".$inhalt;  
	echo "<br>";  
}
echo "<br><br>"; 
foreach($feld[4] AS $uber => $inhalt) {  
	echo $uber . "  -  ".$inhalt;  
	echo "<br>";  
}
?>


Zitat:
0 - 1
1 - 2
2 - 3
3 - Gustav
h - 1
4 - Array


0 - 8
1 - eins
2 - 1

Wenn wir nun mit
$zahl =count($feld);
die Anzahl der Elemente des arrays $feld ermitteln um diese zur Ausgabe der einzelnen Einträge zu benutzen z. B. mit einer for-Schleife.

for($i=0;$i<$zahl;$i++){
echo $feld[$i] ."<br>";
}

so erhalten wir die Ausgabe:
1 2 3 Gustav array - Warum?

die Ausgabe echo $array[$i]; liefert uns die Werte
echo $feld[0];
echo $feld[1];
echo $feld[2];
echo $feld[3];
echo $feld[4];
diese Arrayfelder werden gefunden,
dann kommt echo $feld[5]! das wird nicht gefunden da es nicht vorhanden ist. Somit endet hier die for Schleife mit einer Lücke, da der Eintrag $feld[h] nicht abgefragt und somit nicht gefunden wird.
Um diese Art Fehler zu vermeiden, sollen man im Zweifelsfall mit der foreach-Schleife arbeiten.
diese benutzt einen arrayinternen Zähler, der bei jedem Schleifenduchlauf immer eine Zeile (einen Eintrag) weiter zählt, unabhängig davon was da drin steht.
Aus diesem Grund wurde im obigen Script auch die foreach-Schleife eingesetzt.
Die Schreibweise diese Schleife ist.

foreach($feld AS $inhalt) // der aktuelle Wert des arrays $feld wird in der Variablen $inhalt gespeichert. (1 , 2 , 3 etc.)

oder

foreach($feld AS $schluessel => $inhalt) der aktuelle Schlüssel oder Name wird in der Variablen $schlüssel und der aktuelle Wert wird in der Variablen $inhalt gespeichert. (0 - 1 ,1 - 2 , 3 - Gustav , h - 1 etc.)

Soweit ein kleiner Ausflug zu den arrays.
Es gibt noch einige Dinge die man mit arrays anstellen kann aber das erklären wir, wenn es nötig ist.

LG
haumi


Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH