公司为了需要,导入数据的时候需要找出数据中手机号重读的数据,为此专门看了看一下两种方法的优劣,可能还有更好的方法,可能还会有更优的方法,还请指出来!
/* * 找出数组中重复元素的位置 * 第一种:循环找到重复元素用时: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);