删除空的数组元素
删除空的数组元素
我的数组中有一些元素是空字符串,基于用户的输入,我需要将它们删除。我尝试了以下代码:
foreach($linksArray as $link) { if($link == '') { unset($link); } } print_r($linksArray);
但它不起作用。 $linksArray
仍然有空元素。我也尝试了使用 empty()
函数,但结果一样。
admin 更改状态以发布 2023年5月19日
你可以使用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);
由于您正在处理字符串数组,因此可以直接使用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));