当前位置: 首页> 最新文章列表> 如何用 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

总结