我在这里遇到过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.
我可能知道我的错误是什么吗?
感谢。
答案 0 :(得分:2)
请参阅documentation on array_filter
您需要返回true
或false
,而不是数字......所以您的功能变为:
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()
的函数必须返回TRUE
或FALSE
,告诉PHP检查的当前值是否与您要过滤的值相匹配。您将返回传入的数字。由于您正在检查零,因此您将返回零,PHP将其解释为FALSE
。您可以按如下方式重写该函数:
if ($d == 0) {
return TRUE;
} else {
return FALSE;
}
或更简洁
return ($d == 0);