【函式分享】每日PHP函式分享(2021-3-1)

夢中程式設計師發表於2021-03-01

array_filter — 使用回撥函式過濾陣列的元素

 

說明

array_filter ( array $array , callable|null $callback = null , int $mode = 0 ) : array

  

遍歷 array 陣列中的每個值,並將每個值傳遞給 callback 回撥函式。如果 callback 回撥函式返回 true,則將 array 陣列中的當前值返回到結果 array 陣列中。

返回結果 array 陣列的鍵名(下標)會維持不變,如果 array 引數是索引陣列,返回的結果 array 陣列鍵名(下標)可能會不連續。可以使用 array_values() 函式對陣列重新索引。

 

引數

array:要遍歷的陣列

callback:使用的回撥函式,如果沒有提供 callback 回撥函式,將刪除陣列中 array 的所有“空”元素。有關 PHP 如何判定“空”元素,請參閱 empty() 。

mode:決定哪些引數傳送到 callback 回撥的標誌:

  • ARRAY_FILTER_USE_KEY - 將鍵名作為 callback 回撥的唯一引數,而不是值

  • ARRAY_FILTER_USE_BOTH - 將值和鍵都作為引數傳遞給 callback 回撥,而不是僅傳遞值

預設值為 0 ,只傳遞值作為 callback 回撥的唯一引數。

 

返回值

返回過濾後的陣列。

 

範例

<?php
function odd($var)
{
    // 返回輸入整數是否為奇數(單數)
    return $var & 1;
}
function even($var)
{
    // 返回輸入整數是否為偶數
    return !($var & 1);
}
$array1 = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5];
$array2 = [6, 7, 8, 9, 10, 11, 12];
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
)

  

相關文章