range

(PHP 4, PHP 5, PHP 7, PHP 8)

rangeCria um array contendo uma faixa de elementos

Descrição

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

Cria um array contendo uma faixa de elementos.

Se ambos start e end forem strings, e step é int, o array produzido será uma sequência de bytes. Em outros casos, o array produzido será uma sequência de números.

A sequência é crescente se start é menor ou igual a end. Em outros casos, a sequência é decrescente.

Parâmetros

start

O primeiro valor da sequência.

end

O último valor possível da sequência.

step

step indica o tamanho do deslocamento entre os os valores produzidos na sequência.

step pode ser negativo em sequências decrescentes.

Se step é um float sem uma parte fracional, ele é interpretado como int.

Valor Retornado

Retorna uma sequência de elementos como um array onde o primeiro elemento é start progredindo a até end, com cada valor da sequência separados por step valores.

O último elemento do array retornado pode ser end ou um valor anterior da sequência, a depender do valor de step.

Se ambos start e end são strings, e step é int, o array produzido será uma sequẽncia de bytes, geralmente as letras latinas no padrão ASCII.

Se start, end, ou step forem float, o array produzido será uma sequẽncia de floats.

Em outros casos, o array produzido será uma sequência de int.

Erros/Exceções

  • Se step é 0, um erro ValueError é lançado.
  • se start, end, ou step não for is_finite(), um erro ValueError é lançado.
  • Se step é negativo, mas o array produzido é crescente ($start <= $end), um erro ValueError é lançado.
  • Se start ou end é um string vazia '', um aviso E_WARNING é emitido e a string vazia é interpretada como 0.
  • Se start ou end forem uma string não numérica com mais de um byte, um aviso E_WARNING é emitido.
  • Se start ou end é uma string que pode ser implicitamente convertida para um int, um aviso E_WARNING é emitido.
  • Se step é um float, e start e end forem uma string não numérica, um aviso E_WARNING é emitido.

Registro de Alterações

Versão Descrição
8.3.0 Se ambos start e end forem strings então range() nem sempre produzirá um array de bytes. Anteriormente, se um dos valores limite for uma string numérica, então o outro valor string é implicitamente convertido para um int.
8.3.0 Um aviso E_WARNING agora é emitido se start ou end é uma string implicitamente conversível para int se quaisquer valores limite é interpretado como um número.
8.3.0 Um aviso E_WARNING agora é emitido se start ou end é uma string não numérica com mais de um byte.
8.3.0 Um aviso E_WARNING agora é emitido se start ou end é uma string vazia.
8.3.0 Se step é um float sem parte fracionária, ele será interpretado como um int.
8.3.0 Um erro ValueError agora é lançado se step é negativo quando da produção de um array crescente.
8.3.0 Um erro ValueError agora é lançado se step não for finito.
8.3.0 Um erro TypeError agora é lançado se start ou end é um array, object ou resource. Anteriormente eles eram implicitamente convertidos para int.

Exemplos

Example #1 range() examples

<?php
echo implode(', ', range(0, 12)), PHP_EOL;

echo implode(', ', range(0, 100, 10)), PHP_EOL;

echo implode(', ', range('a', 'i')), PHP_EOL;

echo implode(', ', range('c', 'a')), PHP_EOL;

echo implode(', ', range('A', 'z')), PHP_EOL;
?>

O exemplo acima produzirá:

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100
a, b, c, d, e, f, g, h, i
c, b, a
A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, [, \, ], ^, _, `, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z

Veja Também