range
PHP Manual
PHP Manual»配列 関数»range

range

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

range — ある範囲の要素を含む配列を作成する

説明

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

ある範囲の要素を含む配列を作成します。

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

参考

To Top