php筛选器空数组
如何从数组中删除空数据php筛选器空数组,php,array-filter,Php,Array Filter,如何从数组中删除空数据 var_dump($array); array(1) { [0]=> array(4) { [0]=> string(0) "" [1]=> string(3) "car" [2]=> string(4) "bike" [3]=> string(1) " " } } 我添加array\u过滤器($array)未删除任何内容。那么,如
var_dump($array);
array(1)
{ [0]=>
array(4)
{
[0]=> string(0) ""
[1]=> string(3) "car"
[2]=> string(4) "bike"
[3]=> string(1) " "
}
}
我添加
array\u过滤器($array)代码>未删除任何内容。那么,如何删除,和,或者如果数组中有更多的空空间
?创建一个回调函数,从输入元素中修剪空白,如果修剪后的元素不为空,则返回TRUE
:
$array = array_filter($array, function($x) {
$x = trim($x);
return !empty($x);
});
// Example:
$array = array(1,2,"",3," ",5);
print_r($array);
Array
(
[0] => 1
[1] => 2
[3] => 3
[5] => 5
)
[编辑]
对于某些值(如'0'
)和非字符串值,这确实会失败
更全面的功能是:
$array = array_filter($array, function($a){
return is_string($a) && trim($a) !== "";
});
这将只返回符合您请求的字符串。我认为您正在尝试实现此行为:
<?php
$foo = array(
array(
'foo',
' ',
'bar',
0,
false,
),
);
function array_clean(array $haystack)
{
foreach ($haystack as $key => $value) {
if (is_array($value)) {
$haystack[$key] = array_clean($value);
} elseif (is_string($value)) {
$value = trim($value);
}
if (!$value) {
unset($haystack[$key]);
}
}
return $haystack;
}
print_r(array_clean($foo));
对吗?根据以下文件:
什么意思?是的,是的。“是的,你是对的,尽管你应该总是考虑你的投入是什么,你想走多远。”不管怎么说,我发布了一个替代方案,它只是多一点代码。这相当复杂。足够通用以允许嵌套数组,但在删除字符串“0”时仍保留数字1。
<?php
$foo = array(
array(
'foo',
' ',
'bar',
0,
false,
),
);
function array_clean(array $haystack)
{
foreach ($haystack as $key => $value) {
if (is_array($value)) {
$haystack[$key] = array_clean($value);
} elseif (is_string($value)) {
$value = trim($value);
}
if (!$value) {
unset($haystack[$key]);
}
}
return $haystack;
}
print_r(array_clean($foo));
Array
(
[0] => Array
(
[0] => foo
[2] => bar
)
)
$entry = array(
0 => 'foo',
1 => false,
2 => -1,
3 => null,
4 => ''
);
print_r( array_filter( $entry ) ); //Array ( [0] => foo [2] => -1 )
// removes all NULL, FALSE and Empty Strings but leaves 0 (zero) values
$result = array_filter( $array, 'strlen' );