如何使用 PHP 删除空数组元素

快速解决方案

删除PHP数组中空数组元素的最快方法是使用以下函数:array_filter()

array_filter( $array );

此函数将简单地遍历数组并返回不为空的元素,从而获得我们想要的结果。为了更好地理解这个函数,下面是更详细的说明。

删除空数组元素

使用array_filter() 删除空数组元素

删除 PHP 数组中空数组元素的基本方法是使用函数。假设我们有这个数组,其中包含各种空元素:array_filter()

$colors = ['red', 'blue', '', 'green', '', 'yellow'];

我们只想保留包含值的数组元素并删除空元素。这可以使用以下方法轻松完成: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()

$colors = array_filter( $colors, 'remove_empty' );

提示:额外的数组元素清理

数组元素中可能存在不计为 PHP 定义的“空”空格,您可以在清理数组之前尝试使用 函数修剪空格:trim() array_map()

// 修剪数组元素,删除所有元素上的空白
$colors = array_map( 'trim', $colors );

// Do the filter
$colors = array_filter( $colors );

引用

文章链接:https://www.haah.net/archives/8497.html
文章标题:如何使用 PHP 删除空数组元素
文章版权:辉哥博客 (https://www.haah.net) 所发布的内容,部分为原创文章,转载请注明来源,网络转载文章如有侵权请联系我们!
本文最后更新发布于2022年09月18日 21时38分55秒,某些文章具有时效性,若有错误或已失效,请在下方留言或联系辉哥:m@haah.net

给TA买糖
共{{data.count}}人
人已买糖
0 条回复 A文章作者 M管理员
每日一言:你为了你的正义,我为了我的正义。
    暂无讨论,说说你的看法吧
日夜切换
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索
我是底线可爱胖!冲鸭~