目的
イメージできるようになる
range関数
startからendまでの整数の配列を返す。要するに、配列を作る
<?php
// array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
foreach (range(0, 12) as $number) {
echo $number;
}
shuffle関数
配列の要素に対して、新しいキーを割り当てる。パラメーターは、配列のみ。
<?php
//1~20の数字を$numbersに代入する。
$numbers = range(1, 20);
//
shuffle($numbers);
foreach ($numbers as $number) {
echo "$number ";
}
?>
array_slice関数
こいつが1番分かりづらい。
パラメーターには、array、offset,length,preserve_keysがある。
array→配列
offset→基準点からの距離で位置を表現したもの
length→返す要素の数を指定するが、負の場合は、最後の要素からの基準点になる。(ややこい)
preserve_keys→
<?php
$input = array("a", "b", "c", "d", "e");
$output = array_slice($input, 2);
var_dump($output);
?>
array(3) { [0]=> string(1) "c" [1]=> string(1) "d" [2]=> string(1) "e" }
c,d,eの値を配列で取得している
最初の要素から数えて3番目の値からスタートし、最後の要素まで取得する
<?php
$input = array("a", "b", "c", "d", "e");
$output = array_slice($input, -2);
var_dump($output);
?>
array(2) { [0]=> string(1) "d" [1]=> string(1) "e" }
-2にすると、d,eの値を配列で取得している。
最後の要素から数えて2番目の値からスタートし、最後の要素まで取得する
<?php
$input = array("a", "b", "c", "d", "e");
$output = array_slice($input, 2,2);
var_dump($output);
?>
array(2) { [0]=> string(1) "c" [1]=> string(1) "d" }
c,dの値を配列で取得している。
最初の要素から数えて3番目の値からスタートし、要素数が2になるまで取得できる。
<?php
$input = array("a", "b", "c", "d", "e", "f");
$output = array_slice($input, 1, -2);
var_dump($output);
?>
array(3) { [0]=> string(1) "b" [1]=> string(1) "c" [2]=> string(1) "d" }
b,c,dの値を出力している
最初から数えて2番目の値と、最後から数えて3番目の値の間を配列で取得する。
<?php
$input = array("a", "b", "c", "d", "e", "f");
$output = array_slice($input, 2, -1, true);
var_dump($output);
?>
array(3) { [2]=> string(1) "c" [3]=> string(1) "d" [4]=> string(1) "e" }
値に当てはまる添字が、2から始まる
offsetで指定した数が最初の要素の添字になるようだ
まとめ
random関数は配列を作り、shuffle関数は配列しか受けとらない点から相性の良さを感じる。
array_sliceも配列しか受け取らない。そして、様々な条件(offset,length,preserve_keys)をつけることで取得する際に制限をかけることができる
参考資料・引用先
PHP公式ドキュメント
・shuffle
・range
・array_slice