array_filter

(PHP 4 >= 4.0.6, PHP 5)

array_filter --  用回呼函數過濾陣列中的單元

說明

array array_filter ( array input [, callback callback] )

array_filter() 依次將 input 陣列中的每個值傳遞到 callback 函數。若果 callback 函數返回 TRUE,則 input 陣列的現用的值會被包括在返回的結果陣列中。陣列的鍵名保留不變。

例子 1. array_filter() 例子

<?php
function odd($var)
{
    return(
$var == 1);
}

function 
even($var)
{
    return(
$var == 0);
}

$array1 = array("a"=>1"b"=>2"c"=>3"d"=>4"e"=>5);
$array2 = array(6789101112);

echo 
"Odd :\n";
print_r(array_filter($array1"odd"));
echo 
"Even:\n";
print_r(array_filter($array2"even"));
?>

上例將輸出:

Odd :
Array
(
    [a] => 1
    [c] => 3
    [e] => 5
)
Even:
Array
(
    [0] => 6
    [2] => 8
    [4] => 10
    [6] => 12
)

會員不應在回呼函數中修改陣列本身。例如增加/移除單元或是對 array_filter() 正在作用的陣列進行 unset。若果陣列改變了,此函數的行為沒有定義。

若果沒有提供 callback 函數,array_filter() 將移除 input 中所有等值為 FALSE 的條目。更多訊息見轉換為布林值

例子 2. array_filter()callback

<?php

$entry 
= array(
             
=> 'foo',
             
=> false,
             
=> -1,
             
=> null,
             
=> ''
          
);

print_r(array_filter($entry));
?>

上例將輸出:

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

參見 array_map()array_reduce()array_walk()