這是今天在做作業的時候遇到的乙個問題,不知道大家有沒有遇到同樣的問題,就是去除陣列中不符合我們條件的資料並且保留其鍵名。
言歸正傳:
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函式,將...