一、什麼是數組的filter方法?
在PHP中,數組可以看做是一種特殊的數據類型,可用於存儲多個值。而filter方法,則是PHP提供的一種數組篩選過濾方法,可以根據指定的條件過濾掉一些值,從而得到需要的結果。
使用filter方法前,必須要定義一個回調函數,作為過濾條件。該回調函數有以下兩個可選參數:
- 第一個參數表示數組中當前正在被過濾的元素值
- 第二個參數表示當前元素的鍵名(可選)
然後,將回調函數傳遞給array_filter()函數,即可對數組進行過濾。
二、array_filter()函數的用法
array_filter()函數是PHP中用於篩選數組元素的函數,其用法如下:
$result = array_filter($array, $callback);
其中,$array是要過濾的數組,$callback是一個函數,用於定義過濾條件。$result為處理後的結果數組。
例如,要篩選掉數組中的負數,可以這樣寫:
//定義回調函數 function positive($var){ return $var >= 0; } //定義數組 $arr = array(2, -5, 8, -3, 7); //使用array_filter()函數進行過濾 $result = array_filter($arr, "positive"); //輸出結果 print_r($result);
輸出結果為:
Array ( [0] => 2 [2] => 8 [4] => 7 )
可以看到,過濾掉了數組中的-5和-3兩個負數。
三、數組過濾的實際應用
1.過濾掉數組中的空值
有時候,我們需要過濾掉數組中的空值,可以這樣寫:
//定義回調函數 function not_empty($var){ return !empty($var); } //定義數組 $arr = array('hello', '', 'world', ' ', null, '!', array()); //使用array_filter()函數進行過濾 $result = array_filter($arr, 'not_empty'); //輸出結果 print_r($result);
輸出結果為:
Array ( [0] => hello [2] => world [5] => ! )
該回調函數使用了PHP中的empty函數,用於判斷當前元素是否為空。
2.過濾掉數組中不符合規則的元素
有時候,我們需要將數組中符合特定規則的元素提取出來,可以這樣寫:
//定義回調函數 function start_with_a($var){ return (substr($var, 0, 1) === 'a'); } //定義數組 $arr = array('apple', 'banana', 'pear', 'orange', 'apricot'); //使用array_filter()函數進行過濾 $result = array_filter($arr, 'start_with_a'); //輸出結果 print_r($result);
輸出結果為:
Array ( [0] => apple [4] => apricot )
該回調函數使用了substr函數,用於判斷當前元素的第一個字符是否為’a’。
3.過濾掉數組中的重複元素
有時候,我們需要過濾掉數組中的重複元素,可以這樣寫:
//定義數組 $arr = array(1, 2, 3, 3, 2, 4, 1, 5); //使用array_filter()函數進行過濾 $result = array_filter($arr, function ($key) use (&$arr) { $index = array_keys($arr, $key); return $index[0] == array_search($key, $arr); }); //輸出結果 print_r($result);
輸出結果為:
Array ( [0] => 1 [1] => 2 [2] => 3 [5] => 4 [7] => 5 )
該回調函數使用了array_keys和array_search函數,用於查找數組中指定元素的鍵名。
四、總結
利用PHP中數組的filter方法進行數據過濾,可以大大簡化代碼,提高開發效率。它可以應用於很多場景,如過濾掉數組中的空值、不符合規則的元素、重複元素等。需要注意的是,回調函數中返回值為true的元素會被保留,返回值為false的會被過濾掉。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/254454.html