2010-08-18 47 views
2

我在這裏有一個filter_array的問題。下面array_filter中的錯誤

是我的代碼:

$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

不是PHP5,具體請正確標籤:您可以如下重寫功能。 http://www.php.net/array_filter http://php.net/ChangeLog-5.php(也可能想接受一些答案) – TheLQ 2010-08-18 22:28:47

回答

1

您需要檢查$ d!= 0,它會返回所有非零值。嘗試返回0與返回false相同,因此失敗。

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); 
0

修改返回值,以反映的宗旨:

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

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

問候

RBO

0

傳遞到array_filter()函數必須返回TRUEFALSE告訴PHP是否當前正在檢查的值與您要過濾的值相匹配。您將返回傳入的號碼。由於您正在檢查零值,因此您將返回零,該值將解釋爲FALSE

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

或更簡潔

return ($d == 0);