PHPバージョン
4+
// 元の配列
$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(
    array $array,
    int $offset,
    ?int $length = null,
    bool $preserve_keys = false
): array

/* array_slice(
    元の配列,
    抽出を開始するインデックスの位置[,
    抽出する要素の数[,
    キーを維持するかどうかを示すブール(boolean)値]]
   );
*/
$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]=>え
出力
$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);