array_sliceの基本的な使用法は次のとおりです。
array array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false)
$配列:操作する配列。
$ offset :開始位置(負の数は、マイナス数は配列の端から始まることを意味します)。
$ length :インターセプトされた長さ(オプション)。
$ preserve_keys :元の配列のキー名を保持するかどうか、デフォルトはfalseです。
配列の最後のn要素を抽出するために、キーはネガティブ$ offsetを使用することです。最後の3つの要素を抽出したい場合は、これを書くことができます。
$lastThree = array_slice($array, -3);
ここで、 -3は、インターセプトが3つの位置からアレイの最後まで開始され、最終的に終了することを意味します。
<?php
// アレイの例
$fruits = ["りんご", "バナナ", "オレンジ", "グレープ", "マンゴー", "パイナップル"];
// 最後を抽出します 3 要素
$lastThreeFruits = array_slice($fruits, -3);
print_r($lastThreeFruits);
出力結果:
Array
(
[0] => グレープ
[1] => マンゴー
[2] => パイナップル
)
デフォルトでは、 array_sliceは0から始まる配列のキー名をリセットします。元の配列のキー名を保持する場合は、4番目のパラメーターをtrueに設定できます。
$lastThreeFruits = array_slice($fruits, -3, null, true);
print_r($lastThreeFruits);
出力:
Array
(
[3] => グレープ
[4] => マンゴー
[5] => パイナップル
)
一度に最新のnログのみを表示したいログの配列があるとしたら、 array_sliceで簡単に実装できます。
$logs = [
"2025-05-17 10:00: ユーザーログイン",
"2025-05-17 10:05: ユーザーはファイルをアップロードします",
"2025-05-17 10:15: ユーザー終了",
"2025-05-17 10:20: ユーザーログイン",
"2025-05-17 10:30: ユーザーの変更設定",
];
// 最近見せます 2 ログ
$recentLogs = array_slice($logs, -2);
foreach ($recentLogs as $log) {
echo $log . PHP_EOL;
}
出力:
2025-05-17 10:20: ユーザーログイン
2025-05-17 10:30: ユーザーの変更設定
複数のリンクを含む配列に取り組んでおり、最後のいくつかのリンクを取得したいとします。
$urls = [
"https://gitbox.net/page1",
"https://gitbox.net/page2",
"https://gitbox.net/page3",
"https://gitbox.net/page4",
"https://gitbox.net/page5",
];
// 最後の2つを取得します URL
$lastTwoUrls = array_slice($urls, -2);
print_r($lastTwoUrls);
出力:
Array
(
[0] => https://gitbox.net/page4
[1] => https://gitbox.net/page5
)