在数组过滤器中,如何使系统允许0


In array filter, How to make system allow 0

$data是多维数组,此数组包含不同类型的值

numbercharacterfloatemptyBoolean

这里我想过滤只是空的,但下面的函数过滤0,也为false,请建议一个快速解决方案。

$data = array_map('array_filter',$data);
$data = array_filter($data,function($a){return $a!='';});

以上两种样品均未完全满足要求。

array ('school'=>array('key1'=>abc,'key2'=>1,'key3'=>0,'key4'=>,'key5'=>false))
$data = array_filter($data,function($a){return ($a!=='' && is_null($a)===false );});

简单地尝试而不是$data$data['school']

$data['school'] = array_filter($data['school'], function($a) {
    return $a != '';
});

使用自定义函数,因为本机php函数会将"0"answers"false"视为空:

function array_non_empty_items($input) {
    // If it is an element, then just return it.
    if (!is_array($input)) {
        return $input;
    }
    $non_empty_items = array();
    foreach ($input as $key => $value) {
        // Ignore empty cells
        if($value !== '') {
            // Use recursion to evaluate cells.
            $non_empty_items[$key] = array_non_empty_items($value);
        }
    }
    // Finally returns the array without empty items.
    return $non_empty_items;
}