W3docs

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): array

Dabei gilt:

  • $start: Der erste Wert der Sequenz.
  • $end: Der letzte Wert der Sequenz.
  • $step: Optional. Der Betrag, der zwischen den Werten addiert wird. Standardwert ist 1. Es muss eine positive Zahl sein — range() leitet die Richtung aus $start und $end ab, 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 (0 bis 5), 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:

php— editable, runs on the server

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:

php— editable, runs on the server

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:

php— editable, runs on the server

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:

php— editable, runs on the server

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 $end erwarten, liegen Sie um eins daneben.
  • Den Schritt positiv halten. Die Richtung ergibt sich aus der Reihenfolge von $start und $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+ einen ValueError wirft. Ein Schritt von 0 ist ebenfalls ungültig.
  • Das letzte Element kann übersprungen werden. range(0, 10, 3) ergibt [0, 3, 6, 9]10 ist von 0 aus in Schritten von 3 nicht 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,1 mö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 einer for-Schleife oder SplFixedArray.

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 AZ-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.

Übungen

Übung
Was macht die Funktion range() in PHP?
Was macht die Funktion range() in PHP?
Was this page helpful?