数组过滤器仅删除没有空格的值

时间:2017-01-30 09:14:40

标签: php

数组示例

enter image description here

如上图所示,array_filter只删除类似'的值。 '没有空格。
对于底部,2值也是空的,但因为它有空格,所以它不会过滤它 有解决方案吗我尝试preg_replace()和trim()也无法删除带空格的空值...

1 个答案:

答案 0 :(得分:0)

对于array_filter,如果未提供callback,则将删除所有等于FALSE的数组条目。您可以使用callback array_filter参数来执行此操作。

<?php

$array = [
    'varA' => '',
    'varB' => ' ',
    'varC' => '1',
    'varD' => '   ',
];

$newArr = array_filter($array, function($v, $k){
    return !empty(trim($v));
}, ARRAY_FILTER_USE_BOTH);

var_dump($newArr);

请参阅:http://php.net/manual/en/function.array-filter.php

编辑:

对于多维数组,您可以遍历数组,并为每个元素执行array_filter。对每个元素执行str_replace不是一个好习惯:这会降低代码速度,并使代码更加复杂。

$array = array(
    array(
        'varA' => '',
        'varB' => ' ',
        'varC' => '1',
        'varD' => '   ',
    ),
    array(
        'varA' => '!!!',
        'varB' => '   ',
        'varC' => 'xxx',
        'varD' => '',
    )
);

$newArr = $array;
foreach ($newArr as &$each){
    $each = array_filter($each, function($v, $k){
        return !empty(trim($v));
    }, ARRAY_FILTER_USE_BOTH);
}

var_dump($newArr);