Php 在数组筛选器中,如何使系统允许0

Php 在数组筛选器中,如何使系统允许0,php,arrays,Php,Arrays,$data是多维数组,此数组包含不同类型的值 数字,字符,浮点,空,布尔 这里我只想过滤空,但下面的函数过滤0,以及假,请建议一个快速解决方案请 $data = array_map('array_filter',$data); $data = array_filter($data,function($a){return $a!='';}); 以上两个样品均未完全满足要求 array ('school'=>array('key1'=>abc,'key2'=>1,'key3'=

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

数字
字符
浮点
布尔

这里我只想过滤空,但下面的函数过滤0,以及假,请建议一个快速解决方案请

$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
改为
$data['school']

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

使用自定义函数,因为本机php函数将“0”和“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;
}

小心
=
==你能给我看看你的数组吗?试试
$myarray=array\u filter($myarray,'strlen')附加样本array@ChetanAmeta将整个数组返回为空您使用三元组(!==)是正确的,但看起来他也想删除NULL。也许我错了,但是“key4”似乎是这里的目标。我也添加了检查null的功能,自从我回答这个问题后,对主帖子进行了大量的编辑
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;
}