亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

php 數組過濾函數 array_filter與array_unique

2024-09-04 11:45:50
字體:
來源:轉載
供稿:網友

在php中我給大家介紹兩個比較常用的數組過濾函數array_filter與array_unique了,一個是過濾數組空值,一個是過濾數組重復值,我們現在一起來看看。

語法:array_filter(array,function)

array  必需,規定輸入的數組,function 自定義函數的名稱,為空時過濾掉所有值為flase的元素,代碼如下:

  1. <?php  
  2.    
  3. function odd($var) {  
  4.     return($var & 1);  
  5. }  
  6.    
  7. function even($var) {  
  8.     return(!($var & 1));  
  9. }  
  10.    
  11. $array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);  
  12. $array2 = array(6, 7, 8, 9, 10, 11, 12);  
  13.    
  14. echo "Odd :n";  
  15. print_r(array_filter($array1"odd"));  
  16. echo "Even:n";  
  17. print_r(array_filter($array2"even"));  
  18. /*  
  19.    
  20. Odd :  
  21. Array  
  22.  
  23.      
  24. [a] => 1  
  25.      
  26. [c] => 3  
  27.      
  28. [e] => 5  
  29.  
  30. Even:  
  31. Array  
  32.  
  33.      
  34. [0] => 6  
  35.      
  36. [2] => 8  
  37.      
  38. [4] => 10  
  39.      
  40. [6] => 12  
  41.  
  42. */ 

過濾掉PHP數組中的重復值,去除一個數組中的重復值,可以使用foreach方法,也可以使用array_unique方法,下面的代碼兩種方法都使用了,代碼如下:

  1. <?php 
  2. $arrF = array(); 
  3. $arrS = array(); 
  4. $intTotal = 100; 
  5. $intRand = 10; 
  6. for($i=0; $i < $intTotal$i++) 
  7.  $arrF[] = rand(1, $intRand); 
  8.  $arrS[] = rand(1, $intRand); 
  9. $arrT = array_merge($arrF$arrS); 
  10. $arrRF = array(); 
  11. $intStart = time(); 
  12. foreach($arrT as $v
  13.  if(in_array($v$arrRF)) 
  14.  { 
  15.   continue
  16.  } 
  17.  else 
  18.  { 
  19.   $arrRF[] = $v
  20.  } 
  21. $intEnd = time(); 
  22. $intTime = $intEnd-$intStart
  23. echo "With Continue,Spend time:$intTime<br/>"
  24. $intStart1 = time(); 
  25. $arrRS = array_unique($arrT); 
  26. $intEnd2 = time(); 
  27. $intTime2 = $intEnd2-$intStart1
  28. echo "With array_unique function,Spend time:($intTime2)"
  29. echo "<pre>"
  30. print_r($arrT); 
  31. print_r($arrRF); 
  32. print_r($arrRS); 
  33. echo "</pre>"
  34. ?> 

在$intTotal比較小的情況下,比如說1000以內,$intRand的取值基本不影響結果,兩者執行的時間都差不多。

測試$intTotal 大于10000時,$intRand取值100時,使用array_unique的效率要高于foreach循環判斷,$intRand=10,兩者執行時間一致。

因此,可以得出結論,當數組容量不大,大概在1000以內時,使用兩者的執行效率差不多,當數組容量比較大時(具體應該到什么值,我沒有詳細測試,感興趣的可以確定一下這個值),隨著$intRand的逐漸增大,array_unique的表現更好,我不使用$intTotal/$intRand這個比值,是因為,感覺并不是成比例變化,但是基本會遵循比值越大,array_unique表現越好。

綜上所述,在過濾數組重復值的時候,建議使用array_unuique,數組不大的時候兩者效率等同,而array_unique使用當然讓你的代碼一下子減了好幾行,數組容量過大時,函數的表現更好

二維數組去重復項函數

PHP數組去除重復項 有個內置函數array_unique (),但是php的 array_unique函數只適用于一維數組,對多維數組并不適用,以下提供一個二維數組 的 array_unique函數,代碼如下:

  1. function unique_arr($array2D,$stkeep=false,$ndformat=true) 
  2.  // 判斷是否保留一級數組鍵 (一級數組鍵可以為非數字) 
  3.  if($stkeep$stArr = array_keys($array2D); 
  4.  // 判斷是否保留二級數組鍵 (所有二級數組鍵必須相同) 
  5.  if($ndformat$ndArr = array_keys(end($array2D)); 
  6.  //降維,也可以用implode,將一維數組轉換為用逗號連接的字符串 
  7.  foreach ($array2D as $v){ 
  8.   $v = join(",",$v);  
  9.   $temp[] = $v
  10.  } 
  11.  //去掉重復的字符串,也就是重復的一維數組 
  12.  $temp = array_unique($temp); 
  13.  //再將拆開的數組重新組裝 
  14.  foreach ($temp as $k => $v
  15.  { 
  16.   if($stkeep$k = $stArr[$k]; 
  17.   if($ndformat
  18.   { 
  19.    $tempArr = explode(",",$v);  
  20.    foreach($tempArr as $ndkey => $ndval$output[$k][$ndArr[$ndkey]] = $ndval
  21.   } 
  22.   else $output[$k] = explode(",",$v);  
  23.  } 
  24.  return $output
  25. 測試 
  26. $array2D = array('first'=>array('title'=>'1111','date'=>'2222'),'second'=>array('title'=>'1111','date'=>'2222'),'third'=>array('title'=>'2222','date'=>'3333')); 
  27.  
  28. print_r($array2D); 
  29. print_r(unique_arr($array2D,true)); 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91av视频导航| 欧美午夜www高清视频| 欧美日韩激情视频8区| 91久久国产精品91久久性色| 欧美大片免费观看在线观看网站推荐| 欧美日韩国产中文精品字幕自在自线| 亚洲偷欧美偷国内偷| 欧美性受xxxx黑人猛交| 日韩在线视频免费观看高清中文| 欧美丝袜美女中出在线| 亚洲性日韩精品一区二区| 亚洲永久免费观看| 国产精品久久久久福利| 亚洲国产精品久久久久秋霞蜜臀| 成人网在线免费看| 久久久国产精品x99av| 欧美超级免费视 在线| 国产精品久久久亚洲| 欧美一区二区视频97| 国产精品www网站| 国产欧美日韩精品在线观看| 亚洲精品在线91| 亚洲欧美日韩精品久久奇米色影视| 最近日韩中文字幕中文| 国产精品人成电影在线观看| 久久精品视频中文字幕| 国产精品第1页| 国产色视频一区| 成人黄色片在线| 日韩欧美中文免费| 日韩av网站导航| 日韩欧美国产黄色| www日韩欧美| 亚洲成人教育av| 亚洲男人的天堂网站| 色婷婷综合成人| 欧美性20hd另类| 九色成人免费视频| 亚洲欧美日韩第一区| 91高潮在线观看| 欧美成人免费播放| 成人97在线观看视频| 亚洲福利在线看| 国产精品福利片| 国产精品免费视频xxxx| 91精品啪aⅴ在线观看国产| 亚洲激情视频在线观看| 国产精品尤物福利片在线观看| 欧美疯狂xxxx大交乱88av| 日韩在线欧美在线国产在线| 亚洲精品xxx| 国产97在线|日韩| 久久久在线观看| 亚洲欧美在线一区二区| 国内揄拍国内精品少妇国语| 2019国产精品自在线拍国产不卡| 欧美日韩中文字幕在线| 欧美夫妻性生活xx| 国产成人+综合亚洲+天堂| 日韩精品免费观看| 国产精品永久免费| 热久久免费国产视频| 亚洲福利视频久久| 国产精品黄页免费高清在线观看| 欧美视频一区二区三区…| 日韩女优在线播放| 亚洲一区二区三区成人在线视频精品| 日韩欧美高清视频| 国产精品一区专区欧美日韩| 欧美亚洲成人网| 亚洲福利视频网| 亚洲最大av网站| 精品久久久久久久久久久久久久| 欧美日韩精品在线播放| 国产综合久久久久久| 欧洲美女7788成人免费视频| xxxxx91麻豆| 国产99视频在线观看| 91精品久久久久久久久久| 中文字幕日韩精品有码视频| 日韩成人中文电影| 亚州成人av在线| 91日韩在线播放| 久久久欧美精品| 亚洲片国产一区一级在线观看| 97**国产露脸精品国产| 国产一区私人高清影院| 亚洲色无码播放| 国产精品久久久久7777婷婷| 91精品国产自产在线老师啪| 大伊人狠狠躁夜夜躁av一区| 国内精品久久久| 国产欧美一区二区三区在线| 国产美女高潮久久白浆| 欧美高清第一页| 亚洲另类激情图| 日韩在线视频网| 亚洲视频第一页| 久久久国产影院| 欧美精品一区二区三区国产精品| 日韩电影免费观看在线观看| 国产69久久精品成人看| 欧美国产日韩一区二区三区| 亚洲国产精品中文| 91久久精品国产91性色| 午夜精品久久久久久99热软件| 久久激情视频免费观看| 北条麻妃久久精品| 国产精品你懂得| 国产视频999| 这里只有精品在线播放| 久久精品国产亚洲一区二区| 高跟丝袜一区二区三区| 成人国内精品久久久久一区| 日韩电影免费观看在线| 亚洲激情视频在线观看| 亚洲视频免费一区| 欧美激情第三页| 亚洲人成欧美中文字幕| 久久精品久久久久久| 欧美激情在线狂野欧美精品| 91免费欧美精品| 精品日本高清在线播放| 国内精品久久久久久久久| 国产精品日韩在线一区| 国产精品久久精品| 综合国产在线观看| 欧美人在线观看| 黄色成人av在线| 日韩在线播放av| 怡红院精品视频| 国产91精品高潮白浆喷水| 国产精品一区二区三区成人| 国产午夜精品一区二区三区| 中文字幕亚洲综合| 色哟哟入口国产精品| 黄色精品在线看| 国产精品高清网站| 日韩成人网免费视频| 91久久久久久久久久| 久久视频中文字幕| 欧美大片在线看| 久久色在线播放| 国产精品久久91| 国产精品一区二区久久久久| 欧美激情国产高清| 色噜噜狠狠色综合网图区| 国产噜噜噜噜噜久久久久久久久| 久久精品视频在线播放| 欧美日韩在线视频首页| 久久国产精品影视| 成人免费在线网址| 亚洲精品久久7777777| 在线观看视频亚洲| 亚洲欧美自拍一区| 亚洲国产欧美精品| 亚洲日韩欧美视频一区| 欧美在线免费看| 国产在线视频不卡| 亚洲电影av在线| 视频一区视频二区国产精品| 亚洲影院污污.| 日产日韩在线亚洲欧美| 国产精品视频999|