快速解决方案
删除PHP数组中空数组元素的最快方法是使用以下函数:array_filter()
此函数将简单地遍历数组并返回不为空的元素,从而获得我们想要的结果。为了更好地理解这个函数,下面是更详细的说明。
删除空数组元素
使用array_filter() 删除空数组元素
删除 PHP 数组中空数组元素的基本方法是使用函数。假设我们有这个数组,其中包含各种空元素:array_filter()
我们只想保留包含值的数组元素并删除空元素。这可以使用以下方法轻松完成:array_filter()
// 删除所有空数组元素 $colors = array_filter($colors); // 数组现在是 ['red', 'blue', 'green', 'yellow']
array_filter()是如何工作的?
基于 PHP.net 关于array_filter()函数的官方文档,该函数通过接受至少一个参数来工作 - 要过滤的数组:
array_filter(array $array, ?callable $callback = null, int $mode = 0)$array
是我们要过滤的数组$callback
是遍历数组的回调函数。如果未提供$callback
,则将删除数组
的所有空条目。这就是删除空数组元素的方式。
但是,有时此函数无法按预期工作 - 假设的空元素不会被删除。这是为什么呢?因为它取决于PHP如何用 empty() 函数处理空的东西。有空白的 Unicode 值是空格,空值不被视为空,因此不会被删除。
我们如何解决这个问题?这时,额外的回调才有用。
可选回调,用于额外的删除功能
使用回调来删除空数组元素将有助于具有特殊字符的元素不被视为“空”,或者只是从数组中完全删除字符“0”(我们想要删除)的情况。
我们将首先创建回调函数。根据 PHP.net 文档,如果回调
函数返回 true
,则数组
中的当前值将返回到结果数组中。因此,我们需要在要保留的元素上返回 true,即有效元素:
// 函数来保留和删除我们不想要的元素 function remove_empty( $value ) { // 如果$value不为空(有效),则保留它(return true),否则(empty),则删除它(return false) // 或者如果$value不等于'0'(有效),保留它(return true),否则(是'0'),删除它(return false) return !empty($value) || $value !== '0'; }
然后,我们可以将回调函数传递到实际函数中:array_filter()
提示:额外的数组元素清理
数组元素中可能存在不计为 PHP 定义的“空”空格,您可以在清理数组之前尝试使用 函数修剪空格:trim()
array_map()
// 修剪数组元素,删除所有元素上的空白 $colors = array_map( 'trim', $colors ); // Do the filter $colors = array_filter( $colors );