插件窝 干货文章 PHP如何删除数组中空值?

PHP如何删除数组中空值?

array 数组 filter filteredArray 726    来源:    2025-03-16

在PHP中,你可以使用多种方法来删除数组中的空值。以下是几种常见的方法:

方法1:使用 array_filter() 函数

array_filter() 函数可以过滤数组中的元素。默认情况下,它会删除所有值为 falsenull0''(空字符串)和 array()(空数组)的元素。

$array = [1, 2, null, '', 0, false, 'hello'];

// 使用 array_filter() 删除空值
$filteredArray = array_filter($array);

print_r($filteredArray);

输出:

Array
(
    [0] => 1
    [1] => 2
    [6] => hello
)

方法2:自定义回调函数

如果你需要更精确地控制哪些值被视为“空值”,可以传递一个自定义的回调函数给 array_filter()

$array = [1, 2, null, '', 0, false, 'hello'];

// 自定义回调函数,只删除 null 和空字符串
$filteredArray = array_filter($array, function($value) {
    return $value !== null && $value !== '';
});

print_r($filteredArray);

输出:

Array
(
    [0] => 1
    [1] => 2
    [4] => 0
    [5] => false
    [6] => hello
)

方法3:使用 array_map()array_filter() 结合

如果你需要处理多维数组,可以结合使用 array_map()array_filter()

$array = [
    [1, 2, null],
    ['', 0, false],
    ['hello', null, 'world']
];

// 对多维数组中的每个子数组应用 array_filter()
$filteredArray = array_map(function($subArray) {
    return array_filter($subArray);
}, $array);

print_r($filteredArray);

输出:

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

    [1] => Array
        (
            [1] => 0
            [2] => false
        )

    [2] => Array
        (
            [0] => hello
            [2] => world
        )

)

方法4:使用 array_diff() 函数

如果你想删除特定的空值(如 null''),可以使用 array_diff() 函数。

$array = [1, 2, null, '', 0, false, 'hello'];

// 删除 null 和空字符串
$filteredArray = array_diff($array, [null, '']);

print_r($filteredArray);

输出:

Array
(
    [0] => 1
    [1] => 2
    [4] => 0
    [5] => false
    [6] => hello
)

总结

  • array_filter() 是最常用的方法,可以快速删除数组中的空值。
  • 如果需要更精确的控制,可以使用自定义回调函数。
  • 对于多维数组,可以结合使用 array_map()array_filter()
  • array_diff() 可以用于删除特定的空值。

根据你的具体需求选择合适的方法。