删除空的数组元素

28 浏览
0 Comments

删除空的数组元素

我的数组中有一些元素是空字符串,基于用户的输入,我需要将它们删除。我尝试了以下代码:

foreach($linksArray as $link)
{
    if($link == '')
    {
        unset($link);
    }
}
print_r($linksArray);

但它不起作用。 $linksArray 仍然有空元素。我也尝试了使用 empty() 函数,但结果一样。

admin 更改状态以发布 2023年5月19日
0
0 Comments

你可以使用array_filter移除空元素:

$emptyRemoved = array_filter($linksArray);

如果你的数组中有(int) 0,你可以使用以下方法:

$emptyRemoved = remove_empty($linksArray);
function remove_empty($array) {
  return array_filter($array, '_remove_empty_internal');
}
function _remove_empty_internal($value) {
  return !empty($value) || $value === 0;
}

编辑:也许你的元素本身并不是空的,而是包含一个或多个空格... 你可以在使用array_filter之前使用以下方法

$trimmedArray = array_map('trim', $linksArray);

0
0 Comments

由于您正在处理字符串数组,因此可以直接使用array_filter(),这个函数可以方便地为您处理所有内容:

print_r(array_filter($linksArray));

请记住,如果没有提供回调函数,则数组中所有等于FALSE(请参阅转换为布尔值)的条目将被删除。因此,如果您需要保留例如确切字符串'0'的元素,则需要自定义回调函数:

// PHP 7.4 and later
print_r(array_filter($linksArray, fn($value) => !is_null($value) && $value !== ''));
// PHP 5.3 and later
print_r(array_filter($linksArray, function($value) { return !is_null($value) && $value !== ''; }));
// PHP < 5.3
print_r(array_filter($linksArray, create_function('$value', 'return $value !== "";')));


注意:如果需要在删除空元素后重新索引数组,请使用:$linksArray = array_values(array_filter($linksArray));

0