range

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

説明

array range(stringintfloat $start, stringintfloat $end, intfloat $step = 1)

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

startend が両方文字列で、かつ step が整数の場合、 生成される配列はバイト列のシーケンスになります。 そうでない場合、生成される配列は数値のシーケンスになります。

startend よりも小さい場合、シーケンスは増加します。 そうでない場合、シーケンスは減少します。

パラメータ

start

シーケンスの最初の値。

end

シーケンスの最後としてあり得る値。

step

step は、生成されるシーケンスの個別の値が どれくらい離れているかを指定します。

シーケンスが減少する場合、step は負の値を指定しても構いません。

step が 端数のない float の場合、整数として解釈されます。

戻り値

要素のシーケンスを配列として返します。 最初の要素は start になり、 end になるまで続きます。 シーケンスのそれぞれの値は、step だけ離れています。

返される配列の最後の要素は、 end または シーケンスの直前の要素になります。 どちらになるかは、step の値によります。

startend が両方文字列で、かつ step が整数の場合、 生成される配列は、バイト列のシーケンスになります。 一般的にはラテン文字の ASCII 文字からなるシーケンスです。

start, end, step のうち少なくともひとつが float の場合、 生成される配列は float のシーケンスになります。

その他の場合、生成される配列は整数のシーケンスになります。

エラー / 例外

  • step0 の場合、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 が発生します。なぜなら、他の境界の入力値は数値だからです。
  • stepfloat の場合、 かつ startend数値形式の文字列 でない場合、E_WARNING が発生します。

変更履歴

バージョン 説明
8.3.0 startend が両方文字列の場合、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 が配列、objectresource の場合、 TypeError がスローされるようになりました。 これより前のバージョンでは、これらの値は暗黙のうちに整数にキャストされていました。

例1 range の例

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

echo 
implode(', 'range(010010)), 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

参考