數(shù)組是PHP中非常重要的數(shù)據(jù)結(jié)構(gòu)之一,是存儲(chǔ)一組相關(guān)數(shù)據(jù)的有效方式。不過,在某些情況下,我們可能需要從一個(gè)數(shù)組中提取出特定的數(shù)據(jù),或者篩選掉一些特定的數(shù)據(jù)。這時(shí),我們就需要使用PHP的數(shù)組過濾功能了。
數(shù)組過濾是指篩選出符合指定條件的數(shù)組元素,并將它們組成一個(gè)新的數(shù)組。在PHP中,常見的數(shù)組過濾函數(shù)有array_filter()、array_map()、array_reduce()等。下面我們來逐一了解一下它們的應(yīng)用。
array_filter()
array_filter()函數(shù)可以過濾出數(shù)組中符合指定條件的元素,并將這些元素組成一個(gè)新的數(shù)組返回。它的基本語法如下:
array_filter ( array $array [, callable $callback [, int $flag = 0 ]] ) : array其中,$array參數(shù)是要過濾的數(shù)組,$callback參數(shù)是過濾條件函數(shù),$flag參數(shù)是可選的,用于指定數(shù)組的過濾方式。下面我們來看一個(gè)簡(jiǎn)單的例子,通過array_filter()函數(shù)過濾掉數(shù)組中的偶數(shù):
$arr = [1,2,3,4,5,6,7,8,9]; $oddArr = array_filter($arr, function($var){ return ($var % 2 == 1); }); print_r($oddArr); // 輸出[1, 3, 5, 7, 9]在這個(gè)例子中,我們首先定義了一個(gè)數(shù)組$arr,然后使用array_filter()函數(shù)以回調(diào)的方式傳入一個(gè)匿名函數(shù),過濾掉了所有的偶數(shù),最后得到了一個(gè)新的數(shù)組$oddArr。可以看到,$oddArr中只剩下了1、3、5、7、9這些奇數(shù)。 array_map() array_map()函數(shù)可以將一個(gè)數(shù)組中的每個(gè)元素都傳入一個(gè)函數(shù)進(jìn)行處理,并返回一個(gè)新的數(shù)組。它的基本語法如下:
array_map ( callable $callback , array $array1 [, array $... ] ) : array其中,$callback參數(shù)是要對(duì)數(shù)組元素進(jìn)行處理的函數(shù),$array1、$...參數(shù)則是要處理的數(shù)組。下面我們來看一個(gè)例子,將數(shù)組中的每個(gè)元素都轉(zhuǎn)換成大寫字母:
$arr = ["hello", "world", "!"]; $arrUpperCase = array_map(function($var){ return strtoupper($var); }, $arr); print_r($arrUpperCase); // 輸出 ["HELLO", "WORLD", "!"]在這個(gè)例子中,我們首先定義了一個(gè)包含三個(gè)字符串的數(shù)組$arr,然后使用array_map()函數(shù)將每個(gè)字符串都轉(zhuǎn)換成大寫字母,得到了一個(gè)新的數(shù)組$arrUpperCase。 array_reduce() array_reduce()函數(shù)可以將一個(gè)數(shù)組中的所有元素根據(jù)指定的規(guī)則進(jìn)行歸約,返回一個(gè)單一的值。它的基本語法如下:
array_reduce ( array $array , callable $callback [, mixed $initial = NULL ] ) : mixed其中,$array參數(shù)是要?dú)w約的數(shù)組,$callback參數(shù)是一個(gè)回調(diào)函數(shù),用于指定歸約規(guī)則,$initial參數(shù)是可選的,表示歸約的初始值。下面我們來看一個(gè)例子,計(jì)算出一個(gè)數(shù)組所有元素的和:
$arr = [1, 2, 3, 4, 5]; $sum = array_reduce($arr, function($carry, $var){ return $carry + $var; }); echo $sum; // 輸出15在這個(gè)例子中,我們首先定義了一個(gè)包含五個(gè)數(shù)字的數(shù)組$arr,然后使用array_reduce()函數(shù)計(jì)算出了它們的和,得到了結(jié)果15。
上一篇java工廠模式和工廠類
下一篇java工程師和c++