在 PHP 编程中,经常会遇到需要将数组中的空值去除的情况,这种情况可能出现在数据清洗、数据过滤等场景中。在 PHP 中,有几种方法可以达到这个目的,接下来我们将详细介绍这些方法,以及它们的优缺点。
方法一:使用 array_filter() 函数
array_filter() 函数可以返回一个新的数组,其中不满足自定义函数条件的元素被过滤掉。我们可以构造自定义函数来判断元素是否为空值。
示例代码如下:
$array = array("foo", "", "bar", null, "baz"); $new_array = array_filter($array, function($item) { return !empty($item); });
该例中,$array
数组中包含了空字符串、null 值和非空元素,通过 array_filter()
函数,我们得到了一个不包含空值的新数组,即 $new_array
。
需要注意的是, array_filter()
函数默认会去掉以下值:
如果需要去掉其他值,可以通过自定义函数传递第二个参数进行过滤。
优点:array_filter()
函数使用简单,可以自定义过滤条件。
缺点:相比其他方法,此方法性能较差,中大型数组尤其如此。
方法二:使用 foreach 循环去除空值
此方法较为直接,可以通过 foreach 循环遍历数组,然后利用 PHP 的弱类型特性(空值会被自动转换成 false)来判断并去除空值。
示例代码如下:
$array = array("foo", "", "bar", null, "baz"); foreach($array as $key => $value) { if(!$value) { unset($array[$key]); } }
该例中,我们遍历了 $array
数组,如果元素的值为 false,即被判定为空值,则使用 unset()
函数移除该元素。
优点:相对于 array_filter()
函数,此方法对于大规模数组性能更优。
缺点:需要手动添加条件判断,代码不够简洁。
方法三:使用 array_diff() 函数
array_diff()
函数用于计算数组的值的差集。我们可以使用它来移除空值。
示例代码如下:
$array = array("foo", "", "bar", null, "baz"); $new_array = array_diff($array, array("", null));
该例中,我们使用 array_diff()
函数计算 $array
数组和一个包含空字符串和 null 值的数组的差集,从而得到一个新数组 $new_array
。我们可以看到,该方法可以一次性过滤多个值。
需要注意的是,此方法只能过滤硬编码的空值,无法自定义过滤条件。
优点:代码简洁,可以一次性过滤多个值。
缺点:无法自定义过滤条件。
综上,对于大规模数组,我们建议使用方法二;对于小规模数组,可以选择方法一或方法三。
以上是php 数组怎么去除空值的详细内容。更多信息请关注PHP中文网其他相关文章!