php中array filter的使用

2022-07-29 04:24:14 字數 1416 閱讀 2965

這是今天在做作業的時候遇到的乙個問題,不知道大家有沒有遇到同樣的問題,就是去除陣列中不符合我們條件的資料並且保留其鍵名。

言歸正傳:

array

array_filter ( array

$input

[, callback

$callback

] )array_filter() 依次將 input

陣列中的每個值傳遞到 callback

函式。如果 callback

函式返回 true,則 input

陣列的當前值會被包含在返回的結果陣列中。陣列的鍵名保留不變。

具體的使用方法我也研究了一下。在一般情況下使用

function old($var)

return($var 

% 2 

== 1);}

$array1 

= array(

"a"=>1, 

"b"=>2, 

"c"=>3, 

"d"=>4, 

"e"=>5);

print_r

(array_filter

($array1

, "old"

));這樣我們列印出來就是

array( [a] => 1[c] => 3  [e] => 5);

這裡需要說明的是,$var 代表傳入的值引數,然後根據函式的運算,返回為真的則進行保留,返回為假的進行去除。

手冊上也就這麼多的說明,但是怎麼在oop中使用呢?想了半天也實驗了半天,搞定了。

在oop中

function old($var)

$array1 

= array(

"a"=>1, 

"b"=>2, 

"c"=>3, 

"d"=>4, 

"e"=>5);

print_r

(array_filter

($array1

, array($this,'old')

));說完用法,我們來回顧下 array_filter的含義,它是將陣列的值依次傳入其中進行運算的,也就相當於foreach一遍,測試了下在1185條資料處理使用了 0.25s。

若果資料比較多的時候 時間還會更長。下面看下另外的乙個方法

foreach($array as $key => $value)

-------------------------

}兩個函式處理的時間是一樣的,但是要注意的一點就是

arry_filte是一次運算,不可以參雜更多的運算邏輯。

而foreach則可以在運算的同時進行其它的操作運算。

綜上所述,在資料量較小或不需要太多的運算的時候完全可以使用array_filter,並且效率是很高的。

若資料量比較龐大,或運算比較複雜則使用下面一種比較快些。。

php陣列函式 array filter

array filter 函式用 函式過濾陣列中的元素,如果自定義過濾函式 返回true,則被操作的陣列的當前值就會被包含在返回的結果陣列中,並 將結果組成乙個新的陣列。如果原陣列是乙個關聯陣列,鍵名保持不變。array filter array,function array 必需。規定輸入的陣列 ...

慎用array filter函式

php 4 4.0.6,php 5,php 7 array filter 用 函式過濾陣列中的單元 arrayarray filter array array callable callback int flag 0 依次將array陣列中的每個值傳遞到callback函式。如果callback函式...

array filter函式的應用

arrayarray filter array input callable callback 依次將input陣列中的每個值傳遞到callback函式。如果callback函式返回true,則input陣列的當前值會被包含在返回的結果陣列中。陣列的鍵名保留不變。如果沒有提供callback函式,將...