PHP Arrays, Daten speichern ohne Datenbank
Arrays bieten die Möglichkeit, mehrere Variablen desselben Types zu speichern und über einen Index (in der Form eines Integers) anzusprechen.
Sie werden von PHP in der Namensgebung wie Variablen (also mit vorangestelltem $) behandelt. Angesprochen werden Arrays, indem hinter dem Variablennamen in der rechteckigen Klammer die Ziffer des auszulesenden Segments eingefügt wird, die Segmentnummerierung beginnt mit Null.
$zahlen = array(1,2,3,4);
$namen = array("Christoph","Martin");
$datei=file("arrays.html"); // diese Funktion speichert die Zeilen
//der Datei in je einem Segment eines Arrays
echo $zahlen[0] // ergibt "1"
echo $namen[1] // ergibt "Martin"
echo $datei[10]; //gibt die 11te Zeile der Datei aus
Einem Array können Sie einen Inhalt folgendermaßen anfügen:
$<Arrayname>[] = <neues Element>
$namen[]="Claudia";
Jetzt beinhaltet der Array $namen die Inhalte Christoph, Martin und Claudia.
Assoziative Arrays
Assoziative Arrays, auch Hashs genannt, bieten die Möglichkeit, von der Segmentnummerierung mit Integern Abstand zu nehmen und die Array-Elemente z.B. mit Strings anzusprechen.
$mitglieder = array(
"John" => 5,
"Daniel" => 3,
"Julie" => 2
);
echo $mitglieder["Julie"];
oder auch etwas komplexer, mehrdimensionalerer
$gebaeude = array(
"Möbel" => array("liegen"=>"Bett","liegen"=>"Sessel","sitzen"=>"Stuhl"),
"Häuser" => array("Einfamilienhaus",2 => "Mehrfamilienhaus",3 => "Reihenhaus"),
"Garagen" => array("für 1 Auto", "für zwei Autos", "Tiefgarage")
);
echo $gebaeude["Möbel"]["liegen"]; // Sessel, da der zweite Wert mit demselben Segment
// den ersten überschreibt
Mehrdimensionale Arrays
Niemand hindert sie daran, als Array-Variable einen Array anzugeben. (Genaugenommen ist das letzte Beispiel schon ein mehrdimensionales Array). Ein zweidimensionales Array stellt man i.d.R als Tabelle dar. Codiert sähe das dann so aus
$kleineseinmaleins=array(array(0,0,0,0,0,0,0,0,0,0),array(0,1,2,3,4,5,6,7,8,9),array(0,2,4,6,8,10,12,14,16,18));
echo $kleineseinmaleins[2][3]; // 6
wobei $kleineseinmaleins[2] faktisch der Name des Arrays ist dessen viertes (Segmentnummerierung beginnt bei 0) Element ausgegeben wird. n-Dimensionale Arrays sind möglich, jedoch steigt der Speicheraufwand exponentiell und spätestens nach drei Dimensionen ($arrayname[2][5][6]) verlieren die meisten auch die übersicht.
Weitere Array-Funktionen
sizeof
int sizeof (<Array>)
liefert die Anzahl der Elemente im Array zurück.
$w=0;
for ($i=0; $i<sizeof($theArray); $i++)
{
$w+=$theArray[$i];
}
$avg=$w/sizeof($theArray);
array_merge
array array_merge(<Array1>,<Array2>)
Setzt Array2 an das Ende von Array1.
$kleineseinmaleins=array(array(0,0,0,0,0,0,0,0,0,0),array(0,1,2,3,4,5,6,7,8,0),array(0,2,4,6,8,10,12,14,16,18));
$fortsetzung=array(array(0,3,6,9,12,15,18,21,24,27),array(0,4,8,12,16,20,24,28,32,36),array(0,5,10,15,20,25,30,35,40,45));
$kleineseinmaleins=array_merge($kleineseinmaleins, $fortsetzung);
echo $kleineseinmaleins[5][5]; // 25
array_push
int array_push (<Array>,<Variable>[,<Variable2...>])
Fügt Variable(n) an Array an und liefert die neue Anzahl von Elementen in dem Array. Hat denselben Effekt wie
<Array>[]=<Variable>;
$kleineseinmaleins=array(array(0,0,0,0,0,0,0,0,0,0),array(0,1,2,3,4,5,6,7,8,0),array(0,2,4,6,8,10,12,14,16,18));
array_push($kleineseinmaleins, array(0,3,6,9,12,15,18,21,24,27));
echo $kleineseinmaleins[3][9]; // 27
array_pop
mixed array_pop(<Array>)
liefert das letzte Element des Arrays zurück und entfernt es aus ihm:
$kleineseinmaleins=array(array(0,0,0,0,0,0,0,0,0,0),array(0,1,2,3,4,5,6,7,8,0),array(0,2,4,6,8,10,12,14,16,18));
$malzwei=array_pop($kleineseinmaleins);
echo $malzwei[2].""; // 4
echo $kleineseinmaleins[2][2]; // keine Ausgabe, da Element nicht mehr in Array
array_pad
array array_pad (<Array>, <Länge>, <Wert>)
hängt den Wert an das Array an bis die Länge Länge erreicht ist.
$sexarray=array("f");
$sexarray=array_pad($sexarray, 9, "m");
$sexarray[8]="f";
echo implode(",",$sexarray); //f,m,m,m,m,m,m,m,f
in_array
bool in_array (<Objekt>,<Array>)
Liefert true, wenn Objekt in Array vorkommt.
$kleineseinmaleins=array(array(0,0,0,0,0,0,0,0,0,0),array(0,1,2,3,4,5,6,7,8,0),array(0,2,4,6,8,10,12,14,16,18));
if (in_array(2, $kleineseinmaleins[2])) echo "2 gefunden"; // 2 gefunden
if (in_array(3, $kleineseinmaleins[0])) echo "3 gefunden"; // findet er nicht, weil er im falschen array sucht
sort
void sort (<Array>)
tauscht Arrayelemente so, dass der übergebene Array am Schluss sortiert ist (Vorsicht vor $sorted=sort($unsorted);).
$myarray=array(0);
for ($i=1; $i<10; $i++) $myarray[]=$i;
shuffle($myarray); // array durcheinanderwürfeln
echo implode(",",$myarray).""; // 7,8,6,1,9,2,4,0,3,5
sort($myarray);
echo implode(",",$myarray); //0,1,2,3,4,5,6,7,8,9