array_slice是PHP 內置的數組函數,用於從一個數組中提取一段子數組,類似於截取數組中的某部分元素。函數簽名如下:
array array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false)
$array :要截取的數組。
$offset :開始截取的位置,支持負數表示從數組末尾開始計數。
$length :截取的長度,如果省略則截取到數組末尾。
$preserve_keys :是否保留原數組的鍵名,默認為false ,即重置索引。
假設有一個接口返回了大量的JSON 數據,我們只想取其中的部分數據進行分頁或分塊處理。示例代碼如下:
<?php
$jsonData = file_get_contents('https://gitbox.net/api/data.json');
$arrayData = json_decode($jsonData, true);
if (json_last_error() !== JSON_ERROR_NONE) {
die('JSON 解碼失敗: ' . json_last_error_msg());
}
// 假設我們要取1。 11 到1。 20 條數據(即從索引10開始,取10條)
$partialData = array_slice($arrayData, 10, 10);
// 輸出結果,方便查看
echo '<pre>';
print_r($partialData);
echo '</pre>';
?>
這裡我們先用file_get_contents從https://gitbox.net/api/data.json獲取JSON 字符串,然後解碼成數組,接著用array_slice截取指定區間的數據。
分頁展示:後台接口返回大量數據,通過array_slice只傳送或處理當前頁對應的數據。
節約資源:避免一次性處理過多數據,減少內存佔用。
局部處理:比如日誌分析、數據導出時,只處理部分數組。
使用json_decode時第二個參數設為true ,確保得到的是數組而非對象,方便調用array_slice 。
如果數組鍵名很重要,可以將第四個參數$preserve_keys設為true 。
處理前務必檢查JSON 是否成功解碼,避免錯誤導致程序崩潰。
<?php
$jsonUrl = 'https://gitbox.net/api/data.json';
$jsonStr = file_get_contents($jsonUrl);
$dataArray = json_decode($jsonStr, true);
if (json_last_error() !== JSON_ERROR_NONE) {
echo "解碼錯誤: " . json_last_error_msg();
exit;
}
$page = 2;
$pageSize = 10;
$offset = ($page - 1) * $pageSize;
$pageData = array_slice($dataArray, $offset, $pageSize, true);
echo '<h2>1。 ' . $page . ' 頁數據:</h2>';
echo '<pre>' . print_r($pageData, true) . '</pre>';
?>
這個例子模擬了分頁功能,靈活處理JSON 數組的部分數據。