php中array_filter的使用


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

言歸正傳:

  array array_filter ( array $input [, callback $callback ] )

  array_filter() 依次將 input 數組中的每個值傳遞到 callback 函數。如果 callback 函數返回 TRUE,則 input 數組的當前值會被包含在返回的結果數組中。數組的鍵名保留不變。

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

  function old($var)

{

  return($var == 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)

{

  return($var == 1);

}

$array1 = array("a"=>1"b"=>2"c"=>3"d"=>4"e"=>5);
print_r(array_filter($array1array($this,'old')));
說完用法,我們來回顧下 array_filter的含義,它是將數組的值依次傳入其中進行運算的,也就相當於foreach一遍,測試了下在1185條數據處理使用了 0.25s。

若果數據比較多的時候 時間還會更長。下面看下另外的一個方法

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

    if(true){

      continue;

    }

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

}

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

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

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

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

若數據量比較龐大,或運算比較復雜則使用下面一種比較快些。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM