(PHP 4, PHP 5, PHP 7, PHP 8)
range — ある範囲の要素を含む配列を作成する
ある範囲の要素を含む配列を作成します。
start
と end
が両方文字列で、かつ step
が整数の場合、 生成される配列はバイト列のシーケンスになります。 そうでない場合、生成される配列は数値のシーケンスになります。
start
が end
よりも小さい場合、シーケンスは増加します。 そうでない場合、シーケンスは減少します。
start
シーケンスの最初の値。
end
シーケンスの最後としてあり得る値。
step
step
は、生成されるシーケンスの個別の値が どれくらい離れているかを指定します。
シーケンスが減少する場合、step
は負の値を指定しても構いません。
step
が 端数のない float の場合、整数として解釈されます。
要素のシーケンスを配列として返します。 最初の要素は start
になり、 end
になるまで続きます。 シーケンスのそれぞれの値は、step
だけ離れています。
返される配列の最後の要素は、 end
または シーケンスの直前の要素になります。 どちらになるかは、step
の値によります。
start
と end
が両方文字列で、かつ step
が整数の場合、 生成される配列は、バイト列のシーケンスになります。 一般的にはラテン文字の ASCII 文字からなるシーケンスです。
start
, end
, step
のうち少なくともひとつが float の場合、 生成される配列は float のシーケンスになります。
その他の場合、生成される配列は整数のシーケンスになります。
step
が 0
の場合、ValueError がスローされます。 start
, end
, step
が有限の値(is_finite()) でない場合、 ValueError がスローされます。 step
が負の値なのに、生成される範囲が増えている(つまり、 $start <= $end
) 場合、 ValueError がスローされます。 start
または end
が空文字列 ''
の場合、E_WARNING
が発生し、空文字列は 0
として解釈されます。 start
または end
が 数値形式の文字列 でない、長さが1バイトより大きい値の場合、E_WARNING
が発生します。 start
または end
が 暗黙のうちに整数にキャストされた文字列の場合、 E_WARNING
が発生します。なぜなら、他の境界の入力値は数値だからです。 step
が float の場合、 かつ start
と end
が 数値形式の文字列 でない場合、E_WARNING
が発生します。 バージョン | 説明 |
---|---|
8.3.0 | start と end が両方文字列の場合、range() は常にバイト列を要素とした配列を生成するようになりました。 これより前のバージョンでは、境界の値のうちのひとつが数値形式の文字列の場合に、もう一方の境界の値を整数にキャストしていました。 |
8.3.0 | start または end が 暗黙のうちに整数にキャストされた文字列の場合、 E_WARNING が発生するようになりました。 なぜなら、他の境界の入力値が数値だからです。 |
8.3.0 | start または end が数値形式の文字列でなく、かつ長さが1バイトより大きい値の場合、 E_WARNING が発生するようになりました。 |
8.3.0 | start または end が空文字列の場合、E_WARNING が発生するようになりました。 |
8.3.0 | step が 端数のない float の場合、整数として解釈されるようになりました。 |
8.3.0 | step が負の値なのに、生成される範囲が増えている場合、 ValueError がスローされるようになりました。 |
8.3.0 | step が有限の値でない場合、 ValueError がスローされるようになりました。 |
8.3.0 | start または end が配列、object、resource の場合、 TypeError がスローされるようになりました。 これより前のバージョンでは、これらの値は暗黙のうちに整数にキャストされていました。 |
例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