定義と使い方
- PHPバージョン
- 4+
array_slice() 関数は、配列の特定の範囲の要素を切り取り(slice)、抽出した結果を新しい配列として返します。元の配列は変更されません。
この関数を使用して、配列の任意の範囲の要素を切り取って抽出できます。
基本例
// 元の配列
$array = ['a', 'b', 'c', 'd', 'e'];
/* array_slice() 関数を使用して、
元の配列のインデックス 1 から 3 つの要素を切り取り(slice)、
抽出した結果を新しい配列として返す */
$sliced_array = array_slice($array, 1, 3);
print_r($sliced_array);
/*
出力:
Array
(
[0] => b
[1] => c
[2] => d
)
*/
ご参考ください!array_slice() 関数名の由来は、その関数の動作に関連しています。「slice」という用語は、ある対象から一部分を切り取ったり、断片として抽出したりする動作を表します。array_slice() 関数はこのような動作を実行する関数であり、元の配列から特定の範囲の要素を「切り取って(slice)」新しい配列を作成します。したがって、関数名 array_slice() はその動作を明確に表すために使用されていると考えられます。
文字列では substr() 関数が、文字列の特定の範囲の文字列を切り取り(slice)、抽出した結果を新しい文字列として返します。
構文
array_slice(
array $array,
int $offset,
?int $length = null,
bool $preserve_keys = false
): array
/* array_slice(
元の配列,
抽出を開始するインデックスの位置[,
抽出する要素の数[,
キーを維持するかどうかを示すブール(boolean)値]]
);
*/
引数
$array |
必須。元の配列です。 |
|---|---|
$offset |
必須。抽出を開始する 0 から始まるインデックスを指定します。負の値を使用することも可能で、その場合は配列の末尾から逆算して開始位置を決定します。例えば、 -1 は最後の要素、-3 は末尾から 3 番目の要素から開始します。 |
$length |
オプション。抽出する要素の数です。
|
$preserve_keys |
オプション。抽出された配列のキーを維持するかどうかを決定します。このパラメータはブール(boolean)値で、デフォルト値は false です。
|
ご注意ください!$preserve_keys パラメータは、インデックス配列でのみ true に設定して変更内容を反映させることができます。
連想配列のキーは、このパラメータに関係なく常に保持されます。
戻り値
元の配列から指定された範囲の要素を切り取り(slice)、抽出した結果を新しい配列として返します。
返された配列は、選択した範囲の元の配列の要素を含み、キーは維持されるか、または再設定されることがあります。(これは4番目のパラメータ $preserve_keys によって決まります。)
引数と戻り値の例
$indexed_arr = ['あ', 'い', 'う', 'え', 'お'];
print_r(array_slice($indexed_arr, 0)); // 全て抽出
print_r(array_slice($indexed_arr, 2)); // インデックス 2(「う」)から最後まで
print_r(array_slice($indexed_arr, 2, 1)); // インデックス 2 から 1つだけ
print_r(array_slice($indexed_arr, -2, 1)); // 後ろから 2番目(「え」)から 1つ
print_r(array_slice($indexed_arr, 7)); // 範囲を超えると空の配列 Array ( )
// キーを維持するかどうかの比較
print_r(array_slice($indexed_arr, 2, 2)); // キーの再設定: [0]=>う, [1]=>え
print_r(array_slice($indexed_arr, 2, 2, true)); // キーの維持: [2]=>う, [3]=>え
Array
(
[0] => あ
[1] => い
[2] => う
[3] => え
[4] => お
)
Array
(
[0] => う
[1] => え
[2] => お
)
Array
(
[0] => う
)
Array
(
[0] => え
)
Array
(
)
Array
(
[0] => う
[1] => え
)
Array
(
[2] => う
[3] => え
)
$associative_arr = [
'a' => 'red',
'b' => 'green',
'c' => 'blue',
'd' => 'olive',
'e' => 'brown'
];
print_r(array_slice($associative_arr, 0)); // Array ( [a] => red [b] => green [c] => blue [d] => olive [e] => brown )
print_r(array_slice($associative_arr, 2)); // Array ( [c] => blue [d] => olive [e] => brown )
print_r(array_slice($associative_arr, 2, 1)); // Array ( [c] => blue )
print_r(array_slice($associative_arr, -2, 1)); // Array ( [d] => olive )
print_r(array_slice($associative_arr, 7)); // Array ( )
// 4番目のパラメータによる配列のキーの維持に関する違い
// 連想配列のキーは、このパラメータに関係なく常に保持されます。
print_r(array_slice($associative_arr, 2, 2)); // Array ( [c] => blue [d] => olive )
print_r(array_slice($associative_arr, 2, 2, true)); // Array ( [c] => blue [d] => olive )
活用例
array_slice() 関数は、配列から一部を抽出する際に便利です。以下は、array_slice() 関数のさまざまな活用例です。
配列の先頭から特定のインデックスまでの要素を抽出
// 最新のログデータ配列
$logData = [
'2022-01-01' => 'Log entry 1',
'2022-01-02' => 'Log entry 2',
/* ... */
];
// 直近5日間のログデータを抽出
$recentLogs = array_slice($logData, 0, 5);
// 結果を出力
print_r($recentLogs);
特定のインデックス範囲の要素を抽出
// 商品リストの配列
$products = [
101 => 'Laptop', // 0
102 => 'Smartphone', // インデックス 1(抽出開始点!)
103 => 'Headphones', // 2
104 => 'Tablet', // 3
105 => 'Camera', // 4
106 => 'Smartwatch', // 5
];
// 商品リストから「2番目(インデックス 1)」の要素から「3個」を抽出
// $preserve_keys を true に設定することで、キーの値(102, 103, 104)が維持されます。
$selectedProducts = array_slice($products, 1, 3, true);
// 結果を出力
print_r($selectedProducts);
/*
出力結果:
Array
(
[102] => Smartphone
[103] => Headphones
[104] => Tablet
)
*/
配列の末尾から特定の個数の要素を抽出
// 最近の活動リストの配列
$recentActivity = [
'Commented on a post',
'Liked a photo',
'Posted a status',
'Followed a user',
'Shared a link',
];
// 最も最近の3つの活動を抽出
$selectedActivity = array_slice($recentActivity, -3, null, true);
// 結果を出力
print_r($selectedActivity);
関連項目
- PHP foreach文:配列やオブジェクトを簡単に反復処理するための構文
- PHP array_map()関数:概念の整理と使用例
- PHP array_filter()関数:配列から必要な値だけを抽出する
- PHP array_search()関数:配列から値を検索する
- PHP array_keys()関数:配列のキー一覧を取得する
- PHP array_values()関数:配列の値一覧を取得
- PHP array_pop()関数:配列の最後の要素を削除する
- PHP array_shift()関数:配列の最初の要素を削除する
- JavaScript 配列 slice()関数:配列を指定したインデックス範囲で切り取る