range()
Die PHP-Funktion range() erzeugt ein Array mit einer Sequenz von Elementen zwischen einem Start- und einem Endwert – praktisch und zeitsparend.
Einführung
range() ist eine eingebaute PHP-Funktion, die ein Array mit einer Sequenz von Elementen von einem Startwert bis zu einem Endwert erzeugt. Anstatt eine Schleife zu schreiben, die Zahlen oder Buchstaben einzeln in ein Array einfügt, geben Sie die Endpunkte (und optional einen Schritt) an, und PHP füllt alles dazwischen aus.
Diese Seite behandelt die Syntax, alle Arten von Bereichen, die Sie erzeugen können (aufsteigend, absteigend, Ganzzahlen, Fließkommazahlen und Zeichen), häufige Fallstricke sowie Anwendungsfälle für range() in echtem Code.
Syntax
range(string|int|float $start, string|int|float $end, int|float $step = 1): arrayDabei gilt:
$start: Der erste Wert der Sequenz.$end: Der letzte Wert der Sequenz.$step: Optional. Der Betrag, der zwischen den Werten addiert wird. Standardwert ist1. Es muss eine positive Zahl sein —range()leitet die Richtung aus$startund$endab, nicht aus dem Vorzeichen des Schritts.
Zwei Dinge sollte man sich von Anfang an merken:
- Beide Endpunkte sind eingeschlossen.
range(0, 5)gibt sechs Elemente zurück (0bis5), nicht fünf. - Das Ergebnis ist immer ein neues, nullindiziertes Array — die Schlüssel sind
0, 1, 2, …, unabhängig von den enthaltenen Werten.
Beispiele
Zahlen von 0 bis 5 erzeugen
Der einfachste Aufruf verwendet einen Start- und einen Endwert. Beachten Sie, dass 5 im Ergebnis enthalten ist:
Ausgabe:
Array
(
[0] => 0
[1] => 1
[2] => 2
[3] => 3
[4] => 4
[5] => 5
)Negative Zahlen verwenden
$start und $end können negativ sein, und die Sequenz schreitet trotzdem um 1 fort:
Ausgabe:
Array
(
[0] => -5
[1] => -4
[2] => -3
[3] => -2
[4] => -1
[5] => 0
[6] => 1
[7] => 2
[8] => 3
[9] => 4
[10] => 5
)Werte überspringen
Das dritte Argument legt das Inkrement fest. Hier ist es 2, sodass nur gerade Zahlen erzeugt werden:
Ausgabe:
Array
(
[0] => 0
[1] => 2
[2] => 4
[3] => 6
[4] => 8
[5] => 10
)Einen Zeichenbereich erzeugen
Wenn $start und $end einzelne Zeichen sind, durchläuft range() das Alphabet zwischen ihnen. Das ist nützlich für A–Z-Menüs, Spaltenbeschriftungen oder Testdaten:
Ausgabe:
Array
(
[0] => a
[1] => b
[2] => c
[3] => d
[4] => e
[5] => f
[6] => g
[7] => h
[8] => i
[9] => j
[10] => k
[11] => l
[12] => m
[13] => n
[14] => o
[15] => p
[16] => q
[17] => r
[18] => s
[19] => t
[20] => u
[21] => v
[22] => w
[23] => x
[24] => y
[25] => z
)Rückwärts zählen mit einem absteigenden Bereich
Wenn $start größer als $end ist, zählt range() automatisch rückwärts. Es wird kein negativer Schritt übergeben — der Schritt bleibt positiv:
<?php
$countdown = range(5, 1);
print_r($countdown);Ausgabe:
Array
(
[0] => 5
[1] => 4
[2] => 3
[3] => 2
[4] => 1
)Einen Fließkomma-Schritt verwenden
Der Schritt kann eine Fließkommazahl sein, was gebrochene Sequenzen ermöglicht — nützlich für Schieberegler, Diagrammachsen oder abgetastete Werte:
<?php
$fractions = range(0, 1, 0.25);
print_r($fractions);Ausgabe:
Array
(
[0] => 0
[1] => 0.25
[2] => 0.5
[3] => 0.75
[4] => 1
)Häufige Fallstricke
- Der Bereich ist inklusiv.
range(1, 3)ergibt[1, 2, 3]. Wenn Sie ein Ergebnis der Länge$enderwarten, liegen Sie um eins daneben. - Den Schritt positiv halten. Die Richtung ergibt sich aus der Reihenfolge von
$startund$end. Ein negativer Schritt (z. B.range(0, 5, -1)) ist ein Fehler — ältere PHP-Versionen gaben eine Warnung aus, während PHP 8.3+ einenValueErrorwirft. Ein Schritt von0ist ebenfalls ungültig. - Das letzte Element kann übersprungen werden.
range(0, 10, 3)ergibt[0, 3, 6, 9]—10ist von0aus in Schritten von3nicht erreichbar, sodass die Sequenz beim letzten passenden Wert endet. - Fließkommazahlen können ungenau sein. Da Fließkommazahlen nicht jede Dezimalzahl exakt darstellen können, landet ein Schritt wie
0,1möglicherweise nicht auf dem erwarteten Wert. Runden Sie die Ergebnisse oder rechnen Sie über Ganzzahlen und dividieren Sie anschließend, wenn Genauigkeit wichtig ist. - Der Speicherbedarf wächst mit der Größe.
range(0, 1000000)erzeugt ein Array mit einer Million Elementen im Speicher. Wenn Sie nur iterieren müssen, vermeiden Sie die Allokation mit einerfor-Schleife oderSplFixedArray.
Wann range() verwenden?
range() eignet sich hervorragend, wenn Sie eine fertige Sequenz statt eines leeren Containers benötigen:
- Eine Schleife antreiben. Kombinieren Sie es mit
foreach, um über eine feste Spanne zu iterieren:foreach (range(1, 12) as $month) { … }. - Optionslisten aufbauen — Jahre, Monatstage oder
A–Z-Buchstaben für ein Dropdown-Menü. - Mit
array_map()kombinieren, um jeden Wert zu transformieren, z. B.array_map(fn($n) => $n * $n, range(1, 5))für Quadratzahlen.
Wenn Sie stattdessen ein Array mit demselben wiederholten Wert benötigen, verwenden Sie array_fill() anstelle von range(). Weitere Informationen zu Arrays im Allgemeinen finden Sie im Leitfaden PHP arrays.
Zusammenfassung
range() erstellt ein nullindiziertes Array mit aufeinanderfolgenden Werten zwischen zwei Endpunkten. Es funktioniert mit Ganzzahlen, Fließkommazahlen und Zeichen, zählt auf- oder abwärts und akzeptiert einen optionalen Schritt. Denken Sie daran, dass beide Endpunkte eingeschlossen sind, der Schritt immer positiv ist und große Bereiche echten Speicher belegen — dann wird es zu einem der nützlichsten Einzeiler in PHP.