1. Array mit n mal dem selben Zeichen füllen
Die Funktion array_fill($startIndex, $count, $char) füllt ein Array mit $count mal dem Zeichen $char, wobei die zugewiesenen Schlüssel bei $startIndex beginnen. Das nächste Beispiel zeigt die Anwendung, indem dem Array $arr sieben mal das Zeichen „x” zugewiesen wird (ergibt sieben Elemente).
<?php $arr = array_fill(0, 7, 'x'); var_dump($arr); ?>
array(8) { [0]=> string(1) "x" [1]=> string(1) "x" [2]=> string(1) "x" [3]=> string(1) "x" [4]=> string(1) "x" [5]=> string(1) "x" [6]=> string(1) "x" [7]=> string(1) "x" }
Alternativ zu array_fill() kann die Kombination aus str_repeat($str, $count) und str_split($str) verwendet werden. Erstere Funktion erstellt einen String, welcher $count mal den String $str (aneinandergereiht) enthält. Über str_split($str) werden wiederum alle Zeichen dieses Strings voneinander getrennt und in ein Array umgewandelt, sodass jedes Element exakt ein Zeichen enthält. Das Ergebnis ist hier äquivalent zu array_fill().
<?php $arr = array(); $str = str_repeat('x', 10); $arr = str_split($str); var_dump($arr); ?>
array(10) { [0]=> string(1) "x" [1]=> string(1) "x" [2]=> string(1) "x" [3]=> string(1) "x" [4]=> string(1) "x" [5]=> string(1) "x" [6]=> string(1) "x" [7]=> string(1) "x" [8]=> string(1) "x" [9]=> string(1) "x" }
2. Ein Array mit allen Zahlen zwischen A und B füllen
Über die Funktion range($a, $b) kann ein Array erzeugt werden, welches alle Integer im Bereich zwischen $a und $b enthält. ($a und $b sind jeweils einschließlich.) Jeder Integer wird zu einem eigenen Element im Rückgabearray.
<?php $arr = array(); $arr = range(0, 5); var_dump($arr); ?>
array(6) { [0]=> int(0) [1]=> int(1) [2]=> int(2) [3]=> int(3) [4]=> int(4) [5]=> int(5) }
Statt range() kann natürlich auch eine for-Schleife verwendet werden. Diese muss nur eine Zählvariable (hier $x) hochzählen, welche an der unteren Schranke ($a) beginnt und an der oberen ($b) endet. Bei jeder Iteration muss der Wert der Zählvariable als Element zum Array hinzugefügt werden. (Diese Methode ist offensichtlich langsamer als range().)
<?php $arr = array(); for ($x=0; $x<5; $x++) { $arr[] = x; } var_dump($arr); ?>
array(5) { [0]=> int(0) [1]=> int(1) [2]=> int(2) [3]=> int(3) [4]=> int(4) }
3. Ein Array mit den Buchstaben von A bis Z füllen
Eine for-Schleife kann sehr einfach genutzt werden, um ein Array mit Buchstaben von A bis Z zu füllen. Statt einen Integer als Zählvariable zu verwenden, benutzt man dann einfach einen String. Dieser beginnt zum Beispiel bei „a” (untere Schranke) und endet bei „f”. PHP bildet bei einer Inkrementierung um eins ($x++) automatisch den jeweils nachfolgenden Buchstaben.
<?php $arr = array(); for ($x='a'; $x<'f'; $x++) { $arr[] = $x; } var_dump($arr); ?>
array(5) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" [3]=> string(1) "d" [4]=> string(1) "e" }
Erreicht man das Ende des Alphabets (z), dann wechselt PHP automatisch zu aa, ab, ac, usw. Das nächste Beispiel demonstriert dies. Statt (zum Beispiel) $x<'af' muss man hier allerdings $x!=='af' verwenden, da PHP sonst die Schleife sofort beendet.
<?php $arr = array(); for ($x='x'; $x!=='af'; $x++) { $arr[] = $x; } var_dump($arr); ?>
array(8) { [0]=> string(1) "x" [1]=> string(1) "y" [2]=> string(1) "z" [3]=> string(2) "aa" [4]=> string(2) "ab" [5]=> string(2) "ac" [6]=> string(2) "ad" [7]=> string(2) "ae" }
4. Ein Array mit aufeinander folgenden ASCII-Zeichen füllen
Statt nur mit Zeichen von a bis z kann man ein Array auch mit jedem beliebigen ASCII-Zeichen füllen. Diese bestimmt man am besten mit chr($dezimalwert), wobei $dezimalwert die Nummer des ASCII-Zeichens ist und chr($dezimalwert) das zu $dezimalwert zugehörige Zeichen als String zurückgibt. Auch hier kann eine for-Schleife verwendet werden, um eine bestimmte Anzahl aufeinander folgender Zeichen hinzuzufügen.
<?php $arr = array(); for ($x=52; $x<60; $x++) { $arr[] = chr($x); } var_dump($arr); ?>
array(8) { [0]=> string(1) "4" [1]=> string(1) "5" [2]=> string(1) "6" [3]=> string(1) "7" [4]=> string(1) "8" [5]=> string(1) "9" [6]=> string(1) ":" [7]=> string(1) ";" }
5. Ein Array mit zufälligen ASCII-Zeichen füllen
chr($dezimalwert) kann auch verwendet werden, um ein Array mit zufälligen ASCII-Zeichen zu füllen. Statt einer aufsteigenden Zählvariable verwendet man dazu einfach bei jeder Iteration einen Zufallswert. Dieser kann über mt_rand($a, $b) bestimmt werden, wobei $a die untere Schranke und $b die obere ist.
<?php // Seed für Zufallsgenerator festlegen, damit // das Beispiel immer gleich verläuft. Sollte man sonst // nicht machen. mt_srand(22); $arr = array(); // 7 Zeichen hinzufügen for ($x=0; $x<7; $x++) { // Zufälliges ASCII-Zeichen mit Nummer zwischen 1 und 255 hinzufügen. $arr[] = chr(mt_rand(1, 255)); } var_dump($arr); ?>
array(7) { [0]=> string(1) "�" [1]=> string(1) "M" [2]=> string(1) "{" [3]=> string(1) "F" [4]=> string(1) "l" [5]=> string(1) "^" [6]=> string(1) "&" }
Kommentare (1)
Von neu nach altWir bitten um ihr Verständnis.
beim befüllen des Arrays per for-Schleife wurde das $-Zeichen beim x vergessen.
Grüße
Arno Nuehm