array_filter中的错误

时间:2010-08-18 13:14:35

标签: php array-filter

我在这里遇到过filter_array的问题。

下面是我的代码:

$array = array("0","0","1");
function returnzero($d){

    if($d=='0'){
       return $d;
    }
}

$all_zeros = array_filter($array, "returnzero");
echo count($all_zeros);

我想过滤掉除零之外的所有值。 以上是我的代码。但是,返回的计数结果始终为0.

我可能知道我的错误是什么吗?

感谢。

5 个答案:

答案 0 :(得分:2)

请参阅documentation on array_filter

您需要返回truefalse,而不是数字......所以您的功能变为:

function returnzero($d) { return $d == 0; }

答案 1 :(得分:1)

你需要检查$ d!= 0,它将返回所有非零值。尝试返回0与返回false相同,因此失败。

答案 2 :(得分:1)

函数必须返回TRUE。

    $array = array(0, 0, 1);
    function returnzero($d){

        if($d=='0'){
           return true;
        }
    }

    $all_zeros = array_filter($array, "returnzero");
    echo count ($all_zeros);

答案 3 :(得分:0)

修改返回值以反映目的:

 function iszero($d) { return $d == '0'; }

 $all_zeros = array_filter($array, 'iszero');

此致

RBO

答案 4 :(得分:0)

传递给array_filter()的函数必须返回TRUEFALSE,告诉PHP检查的当前值是否与您要过滤的值相匹配。您将返回传入的数字。由于您正在检查零,因此您将返回零,PHP将其解释为FALSE。您可以按如下方式重写该函数:

if ($d == 0) {
    return TRUE;
} else {
    return FALSE;
}

或更简洁

return ($d == 0);