array_slice

配列の一部を展開する

説明

array array_slice(
    array $array,
    int $offset,
    intnull $length = null,
    bool $preserve_keys = false
)

array_sliceは、array から引数 offset および length で指定された連続する要素を返します。

パラメータ

array

入力の配列。

offset

offset が負の値ではない場合、要素位置の計算は、 配列 array の offset から始められます。

offset が負の場合、要素位置の計算は array の最後から行われます。

offset は、配列の位置を表します。配列のキーではありません。

length

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

配列の要素数が length より少ない場合は、 配列から取得できる要素だけを返します。

length が指定され、負の場合、配列の末尾から連続する複数の要素が返されます。

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

preserve_keys

注意:

array_slice はデフォルトで配列の数値キーを並べなおし、 リセットします。 preserve_keystrue にする事でこの動作を変更することができます。 文字列のキーは、このパラメータの値にかかわらず常に保存されます。

戻り値

切り取った部分を返します。オフセットが配列のサイズより大きい場合は、空の配列を返します。

例1 array_slice の例

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

$output = array_slice($input, 2);      // "c", "d", "e" を返す
$output = array_slice($input, -2, 1);  // "d" を返す
$output = array_slice($input, 0, 3);   // "a", "b", "c" を返す

// 配列キーの違いに注意
print_r(array_slice($input, 2, -1));
print_r(array_slice($input, 2, -1, true));
?>

上の例の出力は以下となります。

Array
(
    [0] => c
    [1] => d
)
Array
(
    [2] => c
    [3] => d
)

例2 array_slice と、キーが1から始まる配列

<?php
$input = array(1 => "a", "b", "c", "d", "e");
print_r(array_slice($input, 1, 2));
?>

上の例の出力は以下となります。

Array
(
    [0] => b
    [1] => c
)

例3 array_slice に、数値と文字列のキーが混じった配列を渡す例

<?php
$ar = array('a'=>'apple', 'b'=>'banana', '42'=>'pear', 'd'=>'orange');
print_r(array_slice($ar, 0, 3));
print_r(array_slice($ar, 0, 3, true));
?>

上の例の出力は以下となります。

Array
(
    [a] => apple
    [b] => banana
    [0] => pear
)
Array
(
    [a] => apple
    [b] => banana
    [42] => pear
)

参考

  • array_chunk
  • array_splice
  • unset