當前位置: 首頁> 最新文章列表> 如何用array_filter() + array_values() 重建索引數組

如何用array_filter() + array_values() 重建索引數組

M66 2025-06-04

在PHP 中,數組是非常常用的數據結構。在開發過程中,我們經常會遇到需要去除數組中空值並重建數組索引的情況。幸運的是,PHP 提供了array_filter()array_values()函數,能夠幫助我們輕鬆地完成這一任務。

1. array_filter()函數簡介

array_filter()函數用來過濾數組中的元素。默認情況下, array_filter()會去除值為false的元素(例如nullfalse0""等)。這個函數返回一個新的數組,包含原數組中所有不為false的元素。

示例代碼:

 $array = [1, 0, 2, null, 3, '', 4];
$filteredArray = array_filter($array);
print_r($filteredArray);

輸出結果:

 Array
(
    [0] => 1
    [2] => 2
    [4] => 3
    [6] => 4
)

如上所示, array_filter()函數移除了數組中的空值,但它沒有重建數組的索引,導致返回的數組仍然保留了原數組的索引。

2. array_values()函數簡介

array_values()函數用於返回數組中所有值的一個新數組,並重新為其生成索引。通常,在對數組進行過濾後,我們會使用array_values()來重新索引數組。

示例代碼:

 $array = [1, 0, 2, null, 3, '', 4];
$filteredArray = array_filter($array);
$reindexedArray = array_values($filteredArray);
print_r($reindexedArray);

輸出結果:

 Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
)

通過使用array_values() ,我們成功地重建了數組的索引,並且去除了所有的空值。

3. 綜合示例:過濾空值並重建數組索引

我們可以將array_filter()array_values()結合起來,創建一個實用的函數,用來過濾數組中的空值並重新索引:

 function cleanAndReindexArray($array) {
    $filtered = array_filter($array); // 過濾空值
    return array_values($filtered);   // 重新索引數組
}

$array = [1, 0, 2, null, 3, '', 4];
$cleanedArray = cleanAndReindexArray($array);
print_r($cleanedArray);

輸出結果:

 Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
)

4. 處理URL 中的域名替換

如果你的數組中包含URL,並且需要將其中的域名替換為m66.net ,我們可以結合使用array_map()和正則表達式來完成。

示例代碼:

 $array = [
    'https://example.com/page1',
    'http://test.com/page2',
    'https://anotherdomain.com/page3'
];

$replacedArray = array_map(function($url) {
    return preg_replace('/https?:\/\/([^\/]+)/', 'https://m66.net', $url);
}, $array);

print_r($replacedArray);

輸出結果:

 Array
(
    [0] => https://m66.net/page1
    [1] => http://m66.net/page2
    [2] => https://m66.net/page3
)

在上面的例子中,我們使用了preg_replace()來替換URL 中的域名,將其改為m66.net

總結