定義
array_filter - 用回調函數過濾數組中的元素
描述
array_filter ( array $array [, callable $callback [, int $flag = 0 ]] ) : array
依次將 array 數組中的每個值傳遞到 callback 函數。如果 callback 函數返回 TRUE,則 array 數組的當前值會被包含在返回的結果數組中。
數組的鍵名保留不變。
如果沒有提供 callback 函數, 將刪除 array 中所有等值為 FALSE 的元素。
參數 flag 決定callback接收的參數形式:
ARRAY_FILTER_USE_KEY
- 接受鍵名作為的唯一參數,整型 1
ARRAY_FILTER_USE_BOTH
- 同時接受鍵名和鍵值,整型 2
兩個系統預定義常量,可通過 get_defined_constants
查看。
示例一
<?php
function even($var)
{
// returns whether the input integer is even
return(!($var & 1));
}
$array = array(6, 7, 8, 9, 10, 11, 12);
echo "Even:\n";
print_r(array_filter($array, "even"));
?>
將輸出:
Even:
Array
(
[0] => 6
[2] => 8
[4] => 10
[6] => 12
)
示例二
不使用回調函數
<?php
$entry = array(
0 => 'foo',
1 => false,
2 => -1,
3 => null,
4 => ''
);
print_r(array_filter($entry));
?>
將輸出:
Array
(
[0] => foo
[2] => -1
)
總結
感覺可以將是否保留鍵值作為一個可選參數傳入,因為很多情況下想要重新索引,當然可以用array_values實現,但如果能集成在函數內部就更好了。