在PHP 中,數組是非常常用的數據結構。在開發過程中,我們經常會遇到需要去除數組中空值並重建數組索引的情況。幸運的是,PHP 提供了array_filter()和array_values()函數,能夠幫助我們輕鬆地完成這一任務。
array_filter()函數用來過濾數組中的元素。默認情況下, array_filter()會去除值為false的元素(例如null 、 false 、 0 、 ""等)。這個函數返回一個新的數組,包含原數組中所有不為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()函數移除了數組中的空值,但它沒有重建數組的索引,導致返回的數組仍然保留了原數組的索引。
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() ,我們成功地重建了數組的索引,並且去除了所有的空值。
我們可以將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
)
如果你的數組中包含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 。