在 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。