(PHP 4, PHP 5, PHP 7, PHP 8)
range — Create an array containing a range of elements
Create an array containing a range of elements.
If both start
and end
are
strings, and step
is int
the produced array will be a sequence of bytes.
Otherwise, the produced array will be a sequence of numbers.
The sequence is increasing if start
is less than
equal to end
.
Otherwise, the sequence is decreasing.
Returns a sequence of elements as an array with the first
element being start
going up to
end
, with each value of the sequence being
step
values apart.
The last element of the returned array is either end
or the previous element of the sequence,
depending on the value of step
.
If both start
and end
are
strings, and step
is int
the produced array will be a sequence of bytes,
generally latin ASCII characters.
If at least one of start
, end
,
or step
is float
the produced array will be a sequence of float.
Otherwise, the produced array will be a sequence of int.
step
is 0
,
a ValueError is thrown.
start
, end
,
or step
is not is_finite(),
a ValueError is thrown.
step
is negative,
but the produced range is increasing
(i.e. $start <= $end
),
a ValueError is thrown.
start
or end
is the empty string ''
,
an E_WARNING
is emitted and
the empty string will be interpreted as 0
.
start
or end
non-numeric string
with more than one byte, an E_WARNING
is emitted.
start
or end
is a string
that is implicitly cast to an int because the other boundary
value is a number, an E_WARNING
is emitted.
step
is a float,
and start
and end
are
non-numeric string,
an E_WARNING
is emitted.
Version | Description |
---|---|
8.3.0 |
If both start and end
are strings then range() will now always produce
an array of bytes.
Previously if one of the boundary values was a numeric string,
then the other boundary value was implicitly cast to int.
|
8.3.0 |
An E_WARNING is now emitted if
start or end
is a string that is implicitly cast to int
because the other boundary value is a number.
|
8.3.0 |
An E_WARNING is now emitted if
start or end
is a non-numeric string with more than one byte.
|
8.3.0 |
An E_WARNING is now emitted if
start or end
is the empty string.
|
8.3.0 |
If step is a float with no
fractional part, it will be interpreted as an int.
|
8.3.0 |
A ValueError is now thrown if
step is negative when producing an increasing
range.
|
8.3.0 |
A ValueError is now thrown if
step is not finite.
|
8.3.0 |
A TypeError is now thrown if
start or end
is an array, object, or resource.
Previously they were implicitly cast to int.
|
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;
?>
The above example will output:
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