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' );