PHPの配列や文字列を連番あるいは連続する要素値の状態で初期化する方法を紹介します。
今回紹介する方法を用いることで、偶数や奇数の要素値を持った配列や、連続する英数字を表す文字列や配列を生成することができます。
目次
配列を連番で初期化する方法
配列を連番や連続する要素値の並びとして初期化・生成したい場合にはrange
関数を用います。
// 0から3までの要素値を持った配列
$a = range(0, 3); // $a == array(0, 1, 2, 3)
// aからdまでの連続した文字要素を持った配列
$a = range('a', 'd'); // $a == array('a', 'd', 'c', 'd')
range関数
range関数の第一引数に開始値、第二引数に連続する値の上限値を指定します。オプションで第三引数に各要素毎の増加値を指定することができます。
range(mixed $start, mixed $end, number $step = 1): array
$start // 開始値
$end // 上限値
$step // 増加値
偶数や奇数の値を持った配列を生成する方法
偶数の要素値のみを保持した配列を生成したい場合には、# range関数の第一引数に偶数値を指定し、第三引数に増加値2
を指定します。連続する奇数の要素値を保持した配列を生成したい場合も同様に、range関数の第一引数に奇数値を指定し、第三引数に増加値2
を指定します。
// 2から8までの偶数の並びを持った配列
$a = range(2, 8, 2); // $a == array(2, 4, 6, 8)
// 1から7までの奇数の並びを持った配列
$a = range(1, 7, 2); // $a == array(1, 3, 5, 7)
文字列を連続する英数字として生成する方法
アルファベットのaからzまでの連続した文字列を生成したい場合には、range関数とimplode関数を組み合わせた処理を用います。
// aからZまでの連続した文字列
$s = implode(range('a', 'z')));
// $s == "abcdefghijklmnopqrstuvwxyz"
// AからZまでの連続した文字列
$s = implode(range('A', 'Z')));
// $s == "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
range
は連続する要素値を持った配列を生成する関数です。implode
は配列の要素を連結した結果を文字列として返す関数です。
数字の0から9の連番を文字列化したい場合も同様に、range関数とimplode関数を組み合わせます。
// 0から9までの連続した文字列
$s = implode(range('0', '9')));
// $s == "0123456789"
いずれも処理も仕組み自体は単純です。range関数で連続する要素の配列を生成し、それをimplode関数で文字列結合しているだけの簡単なテクニックです。
$a = range('a', 'c'); // $a == array('a', 'b', 'c')
$s = implode($a); // $s == "abc"