删除空数组元素
我的数组中的一些元素是基于用户提交的内容的空字符串。我需要删除这些元素。我有这个:
foreach($linksArray as $link)
{
if($link == '')
{
unset($link);
}
}
print_r($linksArray);
但它不起作用。 仍有空元素。我也尝试过使用该函数执行此操作,但结果是相同的。$linksArray
empty()
我的数组中的一些元素是基于用户提交的内容的空字符串。我需要删除这些元素。我有这个:
foreach($linksArray as $link)
{
if($link == '')
{
unset($link);
}
}
print_r($linksArray);
但它不起作用。 仍有空元素。我也尝试过使用该函数执行此操作,但结果是相同的。$linksArray
empty()
当您处理字符串数组时,您可以简单地使用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));
您可以使用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);