Array Doku

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