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 )