LoginSignup
1
1

More than 3 years have passed since last update.

【備忘録】range()、suffle()、array_slice()理解する

Posted at

目的

イメージできるようになる

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→

例1
<?php
$input = array("a", "b", "c", "d", "e");

$output = array_slice($input, 2);     
var_dump($output);
?>
例1の出力
array(3) { [0]=> string(1) "c" [1]=> string(1) "d" [2]=> string(1) "e" }

c,d,eの値を配列で取得している
最初の要素から数えて3番目の値からスタートし、最後の要素まで取得する

例2
<?php
$input = array("a", "b", "c", "d", "e");

$output = array_slice($input, -2);     
var_dump($output);
?>
例2の出力
array(2) { [0]=> string(1) "d" [1]=> string(1) "e" }

-2にすると、d,eの値を配列で取得している。
最後の要素から数えて2番目の値からスタートし、最後の要素まで取得する

例3
<?php
$input = array("a", "b", "c", "d", "e");

$output = array_slice($input, 2,2);     
var_dump($output);
?>
例3の出力
array(2) { [0]=> string(1) "c" [1]=> string(1) "d" }

c,dの値を配列で取得している。
最初の要素から数えて3番目の値からスタートし、要素数が2になるまで取得できる。

例4lengthが負の場合は、配列の末尾から連続する複数の要素が返されます。
<?php
$input = array("a", "b", "c", "d", "e", "f");

$output = array_slice($input, 1, -2);    
var_dump($output);
?>
例4の出力
array(3) { [0]=> string(1) "b" [1]=> string(1) "c" [2]=> string(1) "d" }

b,c,dの値を出力している
最初から数えて2番目の値と、最後から数えて3番目の値の間を配列で取得する。

例4preserve_keysをtrue
<?php
$input = array("a", "b", "c", "d", "e", "f");

$output = array_slice($input, 2, -1, true);

var_dump($output);
?>
例4の出力
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

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1