2014-10-19 71 views
9

我只是碰到這種代碼傳來:什麼是array_filter沒有回調嗎?

array_filter(array_map('intval', $array)); 

它似乎返回$陣列的所有條目轉換爲int在數量是> 0

但是我無法看到的手冊頁,這在被定義爲。如果回調函數的計算結果爲true,它應該返回數組值。但是這裏沒有定義回調函數。

混淆也回調函數是手動頁可選:http://php.net/manual/en/function.array-filter.php

+1

'array_filter'通常只是刪除數組中的空白(或等效),如果沒有回調。 – Rasclatt 2014-10-19 21:57:39

+1

這是從手冊中提取的***如果沒有提供回調,則數組的所有條目等於FALSE(參見轉換爲布爾值)將被刪除***。 – 2014-10-19 21:59:42

+0

是的,歡呼聲,我忽略了它 – jdog 2014-10-19 22:00:15

回答

12

從數組中移除空的或等效值:

實施例#2 array_filter(),而不回調

$entry = array(
       0 => 'foo', 
       1 => false, 
       2 => -1, 
       3 => null, 
       4 => '' 
      ); 

    print_r(array_filter($entry)); 

結果

Array 
(
    [0] => foo 
    [2] => -1 
) 

從手動查看original documentation

6

如果你只閱讀網頁上的遠一點,你聯繫,你會發現,「如果沒有回調提供,所有條目的數組等於FALSE(參見轉換爲布爾值)將被刪除。「

+1

我必須是一個小盲人! – jdog 2014-10-19 21:59:54

+1

它偶爾會發生在每個人身上。 – 2014-10-19 22:00:37