公司爲了須要,導入數據的時候須要找出數據中手機號重讀的數據,爲此專門看了看一下兩種方法的優劣,可能還有更好的方法,可能還會有更優的方法,還請指出來!php
/* * 找出數組中重複元素的位置 * 第一種:循環找到重複元素用時:150ms左右 10W條數據 * 第二種:循環找到重複元素用時:76ms左右 10W條數據 * * 第一種:循環找到重複元素用時:750ms左右 100W條數據 * 第二種:循環找到重複元素用時:750ms左右 100W條數據 * */ // 建立10W個隨機元素的數組 for($i=0; $i<100000; $i++){ $arr[] = mt_rand(1,1000); } //第一種 foreach($arr as $key=>$value){ if(!isset($resultArr[$value])){ $resultArr[$value] = 1; }else{ $resultArr[$value]++; } } foreach($arr as $key=>$value){ if($resultArr[$value] > 1){ $data[$value][] = $key; } } unset($arr) //第二種 $date = array_flip($arr); foreach($arr as $k=>$v) { if(isset($date[$v])) { $date[$v] .= $k . ","; } } unset($arr);