我想从数组中删除空元素。
我找到了这个代码:
$outaa = array_map('trim', $outaa);
$outaa = array_filter($outaa);
我的数组包含仅包含'0'的元素。 我的代码也删除了那些只有'0'的元素。 但我不想删除它们。
答案 0 :(得分:1)
array_filters删除非严格意义上的空元素。即它将删除0,'',null,array()等
您必须使用执行严格比较的函数。我假设“empty”表示null,并且你有PHP 5.3+(使用闭包):
$outaa = array_filter($outaa, function($element) {
if($element !== null) return true;
});
或者,如果你没有5.3使用正常的回调:
function filter_empty($element)
{
if($element !== null) return true;
}
$outaa = array_filter($outaa, 'filter_empty');
答案 1 :(得分:1)
$outaa = array_remove_empty($outaa);
function array_remove_empty($arr){
$narr = array();
while(list($key, $val) = each($arr)){
if (is_array($val)){
$val = array_remove_empty($val);
// does the result array contain anything?
if (count($val)!=0){
// yes :-)
$narr[$key] = $val;
}
}
else {
if (trim($val) != ""){
$narr[$key] = $val;
}
}
}
unset($arr);
return $narr;
}
答案 2 :(得分:0)
单线总是很好。以下内容将从数组中删除所有空字符串NULL
和FALSE
元素:
$clean_array = array_diff(array_map('trim', $my_array), array('', NULL, FALSE));
说明:
array_diff
的第一个参数: $my_array
的剪裁版本。使用array_map
,通过trim
函数从每个元素中修剪周围的空白。如果一个元素包含一个只有空格(即制表符,空格)的字符串,那么使用剪裁版本是件好事,我认为这也是想要删除的。如果你不想修剪元素,你可以很容易地使用$ my_array作为第一个参数。array_diff
的第二个参数:您要从$my_array
中删除的项目数组。''
,NULL
和FALSE
位于第二个数组中,array_diff
永远不会返回它们。修改强>
事实证明,您不需要在第二个数组中拥有NULL
和FALSE
。相反,您可以拥有''
,它的工作方式相同:
$clean_array = array_diff(array_map('trim', $my_array), array(''));