【PHP初心者向け】 配列から一部の要素を展開する方法 array_slice

こんにちは。

久々にカップ焼きそばを作ったら、お湯と一緒にソースを入れてしまいスープ焼きそばを食べた裕です。

ややこしい配列操作苦手意識を持っている方も多いと思います。

配列から一部の要素を展開したい時ってありますよね?

またarray_sliceって引数が多くてわかりにくいから敬遠しちゃうっていう人いますよね?

そこで今回はPHP初心者に向けて、

配列から一部の要素を展開する array_slice

について解説します。

ぜひ、読んでみて理解を深めてみて下さいね。

array_sliceの引数を解説

まずarray_sliceの基本的な書き方です。

array_slice ( array $array , int $offset [, int $length [, bool $preserve_keys =FALSE] ] )

array

対象の配列です(必須)

offset

対象の配列から切り取られる数を指定します。(必須)

1を入力した場合開始位置は2つ目からになります。要素の添字ではないことに注意して下さい。

負の数で指定することもできます。最後の要素が-1として数えられるので、-1を指定した場合は後ろから2番目が切り取られるということになります。

length

指定しない場合、初期値としてはNULLとなります。

これは切り取る要素の数を指定します。

lengthが正の場合、 配列の要素の中から最大でその数までの要素を返します。

また、要素の数がlenguthの数より少ない場合は、取得できる全ての数を返します。

lengthが負の場合、配列の末尾から先頭方向へ連続する複数の要素が返されます。

lengthが省略された場合、offsetから配列の最後まで全ての要素が返されます。

preserve_keys

array_sliceデフォルトでは配列の数値キーをリセットし並べ直します

preserve_keysTRUEにすることで数値キーのリセットを取り消すことができます。

文字列キーはpreserve_keysのパラメーター値に関係なく常に保存されます。

array_sliceの使い方

array_sliceの使い方を4つの例文で紹介します。

配列の先頭から展開する

まずはoffset正の数にして配列の先頭から展開してみます。

<?php

$array = [‘one’, ‘two’, ‘three’, ‘four’, ‘five’, ‘six’, ‘seven’];

$result = array_slice($array, 4);

print_r($result);

?>

結果は下記になります。

Array

(

    [0] => five

    [1] => six

    [2] => seven

)

array_sliceによって先頭から4つの要素を切り取ったので5番目の要素の’five’から展開します。

配列の末尾から展開する

offset負の数にして配列の末尾から展開してみます。

<?php

$array = [‘one’, ‘two’, ‘three’, ‘four’, ‘five’, ‘six’, ‘seven’];

$result = array_slice($array, -4);

print_r($result);

?>

実行結果は下記になります。

Array

(

    [0] => four

    [1] => five

    [2] => six

    [3] => seven

)

負の数の場合、後ろから4番目で切り取られ後ろから5番目から展開されます。

要素の数を指定して展開する

lengthを追加して要素の数を指定して展開してみます。

<?php

$array = [‘one’, ‘two’, ‘three’, ‘four’, ‘five’, ‘six’, ‘seven’];

$result = array_slice($array, 2, 3);

print_r($result);

?>

実行結果です。

Array

(

    [0] => three

    [1] => four

    [2] => five

)

offsetで2を指定しているので先頭から2番目までが切り取られたの3番目の’three’から始まります。

length3を指定しているので先頭から3つを展開します。

添字を残して要素を展開する

上の例文にpreserve_keystrueにして追加して展開してみます。

<?php

$array = [‘one’, ‘two’‘three’, ‘four’, ‘five’, ‘six’, ‘seven’];

print_r($array);

$result = array_slice($array, 2, 3, true);

print_r($result);

?>

実行結果です。

Array

(

    [0] => one

    [1] => two

    [2] => three

    [3] => four

    [4] => five

    [5] => six

    [6] => seven

)

Array

(

    [2] => three

    [3] => four

    [4] => five

)

preserve_keystrueに設定することにより添字が元のままで

配列の要素を展開することができます

まとめ

いかがでしたか?

今回は配列に配列を結合する「array_slice」について、解説しました。

引数の数が多く少し混乱しやすいですが、一つ一つみていくとしっかり動きが追えるようになりましたね。

自分でも試しながら、しっかりと理解して使いこなせるようになりましょう。