W3docs

range()

La fonction PHP range() génère un tableau contenant une séquence d'éléments entre une valeur de début et une valeur de fin, avec un pas optionnel.

Introduction

range() est une fonction PHP intégrée qui construit un tableau contenant une séquence d'éléments allant d'une valeur de début à une valeur de fin. Au lieu d'écrire une boucle pour insérer des nombres ou des lettres dans un tableau un par un, vous décrivez les bornes (et éventuellement un pas) et PHP remplit tout ce qui se trouve entre les deux.

Cette page couvre la syntaxe, tous les types de séquences que vous pouvez générer (croissante, décroissante, entiers, flottants et caractères), les pièges courants, et les cas d'utilisation réels de range().

Syntaxe

range(string|int|float $start, string|int|float $end, int|float $step = 1): array

Où :

  • $start : La première valeur de la séquence.
  • $end : La dernière valeur de la séquence.
  • $step : Facultatif. La valeur ajoutée entre chaque élément. La valeur par défaut est 1. Ce doit être un nombre positif — range() détermine la direction à partir de $start et $end, et non du signe du pas.

Deux points importants à retenir dès le départ :

  • Les deux bornes sont incluses. range(0, 5) retourne six éléments (0 à 5), et non cinq.
  • Le résultat est toujours un nouveau tableau indexé à zéro — les clés sont 0, 1, 2, … quelles que soient les valeurs contenues.

Exemples

Générer des nombres de 0 à 5

L'appel le plus simple prend un début et une fin. Notez que 5 est inclus dans le résultat :

php— editable, runs on the server

Résultat :

Array
(
    [0] => 0
    [1] => 1
    [2] => 2
    [3] => 3
    [4] => 4
    [5] => 5
)

Utiliser des nombres négatifs

$start et $end peuvent être négatifs, et la séquence progresse toujours par pas de 1 :

php— editable, runs on the server

Résultat :

Array
(
    [0] => -5
    [1] => -4
    [2] => -3
    [3] => -2
    [4] => -1
    [5] => 0
    [6] => 1
    [7] => 2
    [8] => 3
    [9] => 4
    [10] => 5
)

Sauter des valeurs

Le troisième argument définit l'incrément. Ici, il est de 2, donc seuls les nombres pairs sont produits :

php— editable, runs on the server

Résultat :

Array
(
    [0] => 0
    [1] => 2
    [2] => 4
    [3] => 6
    [4] => 8
    [5] => 10
)

Générer une séquence de caractères

Lorsque $start et $end sont des caractères uniques, range() parcourt l'alphabet entre eux. C'est pratique pour construire des menus A–Z, des étiquettes de colonnes ou des données de test :

php— editable, runs on the server

Résultat :

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
)

Compter à rebours avec une séquence décroissante

Si $start est supérieur à $end, range() compte à rebours automatiquement. Vous ne passez pas un pas négatif — le pas reste positif :

<?php

$countdown = range(5, 1);
print_r($countdown);

Résultat :

Array
(
    [0] => 5
    [1] => 4
    [2] => 3
    [3] => 2
    [4] => 1
)

Utiliser un pas flottant

Le pas peut être un flottant, ce qui permet de construire des séquences fractionnaires — utiles pour des curseurs, des axes de graphiques ou des valeurs échantillonnées :

<?php

$fractions = range(0, 1, 0.25);
print_r($fractions);

Résultat :

Array
(
    [0] => 0
    [1] => 0.25
    [2] => 0.5
    [3] => 0.75
    [4] => 1
)

Pièges courants

  • La séquence est inclusive. range(1, 3) donne [1, 2, 3]. Si vous attendiez un résultat de longueur $end, vous serez décalé d'une unité.
  • Gardez le pas positif. La direction vient de l'ordre de $start et $end. Passer un pas négatif (par exemple range(0, 5, -1)) est une erreur — les anciennes versions de PHP émettaient un avertissement, tandis que PHP 8.3+ lève une ValueError. Un pas de 0 est également invalide.
  • Le dernier élément peut être ignoré. range(0, 10, 3) produit [0, 3, 6, 9]10 n'est pas atteignable depuis 0 par pas de 3, donc la séquence s'arrête à la dernière valeur qui tient.
  • Les flottants peuvent être imprécis. Comme les nombres en virgule flottante ne peuvent pas représenter exactement toutes les décimales, un pas comme 0.1 peut ne pas atterrir sur la valeur attendue. Arrondissez les résultats, ou itérez sur des entiers et divisez ensuite, quand la précision est importante.
  • La mémoire croît avec la taille. range(0, 1000000) construit un tableau d'un million d'éléments en mémoire. Si vous avez seulement besoin d'itérer, une boucle for ou SplFixedArray évite cette allocation.

Quand utiliser range()

range() est idéal lorsque vous avez besoin d'une séquence prête à l'emploi plutôt que d'un conteneur vide :

  • Piloter une boucle. Combinez-le avec foreach pour itérer sur une plage fixe : foreach (range(1, 12) as $month) { … }.
  • Construire des listes d'options — années, jours du mois, ou lettres AZ pour une liste déroulante.
  • Associer avec array_map() pour transformer chaque valeur, par exemple array_map(fn($n) => $n * $n, range(1, 5)) pour obtenir des carrés.

Si vous souhaitez plutôt un tableau contenant la même valeur répétée, utilisez array_fill() plutôt que range(). Pour en savoir plus sur les tableaux en général, consultez le guide PHP arrays.

Résumé

range() crée un tableau indexé à zéro de valeurs séquentielles entre deux bornes. Elle fonctionne avec des entiers, des flottants et des caractères, compte dans les deux sens, et accepte un pas optionnel. N'oubliez pas que les deux bornes sont inclusives, que le pas est toujours positif, et que les grandes séquences allouent de la mémoire réelle — ce qui en fait l'une des fonctions les plus pratiques de PHP.

Pratique

Pratique
Que fait la fonction range() en PHP ?
Que fait la fonction range() en PHP ?
Was this page helpful?