(PHP 4, PHP 5, PHP 7, PHP 8)
range — 根据范围创建数组,包含指定的元素
建立一个包含指定范围单元的数组。
如果 start 和 end 都是 string,step
是 int,则生成的数组是字节序列,否则,生成的数组将是数字序列。
如果 start 小于或等于 end,则为递增序列,否则为递减序列。
返回 array,由元素组成的序列,其中第一个元素为 start,最后一个元素为
end,序列中每个元素之间的差值为 step。
返回的数组的最后一个元素是 end 或序列中的前一个元素,具体取决于 step。
如果 start 和 end 都是 string,并且
step 是 int,则生成的数组将是字节序列,通常是拉丁 ASCII 字符。
如果 start、end 或 step 是
float,则生成的数组将是 float 序列。
否则,生成的数组将是 int 序列。
step 是 0,则抛出 ValueError。
start、end 或 step 不是
is_finite(),则抛出 ValueError。
step 是负数,但生成的范围是递增的(例如 $start <=
$end),则抛出 ValueError。
start 或 end 是空字符串 '',则发出
E_WARNING 并将空字符串解释为 0。
start 或 end 不是数字字符串,并且多于一个字节,将发出 E_WARNING。
start 或 end 是字符串,并且由于另一个边界值是数字而默默转换为
int,将发出 E_WARNING。
step 是 float,并且 start 和 end
不是数字字符串,将发出 E_WARNING。
| 版本 | 说明 |
|---|---|
| 8.3.0 |
如果 start 和 end 都是字符串,然后 range()
现在将始终生成字节 array。之前如果其中一个边界值是数字字符串,然后另外一个边界值也会默默转换为 int。
|
| 8.3.0 |
如果 start 或 end 是字符串,并且由于另一个边界值是数字而默默转换为
int,现在将发出 E_WARNING。
|
| 8.3.0 |
如果 start 或 end 是多于一个字节的非数字字符串,现在将发出 E_WARNING。
|
| 8.3.0 |
如果 start 或 end 是空字符串,现在将发出 E_WARNING。
|
| 8.3.0 |
如果 step 是不带小数部分的 float,将解释为 int。
|
| 8.3.0 |
如果 step 是负数,当生成的范围是递增时,现在将抛出 ValueError。
|
| 8.3.0 |
如果 step 不是有限数值(finite),现在将抛出 ValueError。
|
| 8.3.0 |
如果 start 或 end 是 array、object 或
resource,现在将会抛出 TypeError。之前会默默地转换为 int。
|
示例 #1 range() 示例
<?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;
?>以上示例会输出:
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