在日常PHP 編程中,我們經常需要從一個數組中提取出一部分元素用於展示、分頁或處理子集數據。 PHP 提供了一個非常實用的函數—— array_slice() ,可以幫助我們高效地完成這項任務。
array_slice()是PHP 中用於從數組中提取一段子數組的函數。它不會改變原始數組,而是返回所截取部分的新數組。其基本語法如下:
array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false): array
$array :原始數組。
$offset :從哪個位置開始截取。如果是負數,則從數組末尾倒數開始。
$length (可選):要截取的元素數量。如果省略,則從offset 開始一直截取到數組末尾。
$preserve_keys (可選):是否保留原來的鍵名,默認是false 。
$fruits = ['apple', 'banana', 'orange', 'grape', 'melon'];
$sliced = array_slice($fruits, 1, 3);
print_r($sliced);
輸出:
Array
(
[0] => banana
[1] => orange
[2] => grape
)
從下標1 開始,截取3 個元素。注意鍵名是重新排序的,因為preserve_keys默認為false 。
$fruits = ['a' => 'apple', 'b' => 'banana', 'c' => 'orange', 'd' => 'grape'];
$sliced = array_slice($fruits, 1, 2, true);
print_r($sliced);
輸出:
Array
(
[b] => banana
[c] => orange
)
這裡我們設置preserve_keys為true ,所以保留了原數組中的鍵名。
$numbers = [10, 20, 30, 40, 50];
$sliced = array_slice($numbers, -3, 2);
print_r($sliced);
輸出:
Array
(
[0] => 30
[1] => 40
)
使用負數offset 從數組末尾倒數第三個元素開始截取2 個。
假設我們從數據庫中讀取了一個包含多個文章標題的數組,現在需要實現分頁,每頁顯示5 條數據:
$articles = [
'文章1', '文章2', '文章3', '文章4', '文章5',
'文章6', '文章7', '文章8', '文章9', '文章10',
'文章11', '文章12'
];
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$pageSize = 5;
$offset = ($page - 1) * $pageSize;
$pagedArticles = array_slice($articles, $offset, $pageSize);
foreach ($pagedArticles as $article) {
echo "<p>$article</p>";
}
// 示例分頁鏈接
echo '<a href="https://gitbox.net/articles.php?page=1">首頁</a> ';
echo '<a href="https://gitbox.net/articles.php?page=2">1。2頁</a> ';
echo '<a href="https://gitbox.net/articles.php?page=3">1。3頁</a>';
以上代碼展示瞭如何用array_slice()結合$_GET參數實現簡單的分頁功能,並生成分頁鏈接。注意這裡的URL 使用的是gitbox.net域名。
array_slice()是處理數組截取操作時不可或缺的工具,它靈活、高效且用法簡單。通過合理使用offset、length 和preserve_keys 參數,我們可以根據不同的場景快速獲得所需的數組子集。無論是在數據分頁、列表展示還是數據過濾中, array_slice()都能大顯身手。