国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 語(yǔ)言 > PHP > 正文

php 數(shù)組元素快速去重

2024-05-04 23:57:05
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

1.使用array_unique方法進(jìn)行去重

對(duì)數(shù)組元素進(jìn)行去重,我們一般會(huì)使用array_unique方法,使用這個(gè)方法可以把數(shù)組中的元素去重。

<?php$arr = array(1,1,2,3,3,3,4,4,5,6,6,7,8,8,9,9,9);$arr = array_unique($arr);$arr = array_values($arr);print_r($arr);?>

輸出:

Array(  [0] => 1  [1] => 2  [2] => 3  [3] => 4  [4] => 5  [5] => 6  [6] => 7  [7] => 8  [8] => 9)

去重后,鍵值會(huì)不按順序,可以使用array_values把鍵值重新排序。

2.使用array_unique方法去重效率

<?php$arr = array();// 創(chuàng)建100000個(gè)隨機(jī)元素的數(shù)組for($i=0; $i<100000; $i++){  $arr[] = mt_rand(1,99);}// 記錄開(kāi)始時(shí)間$starttime = getMicrotime();// 去重$arr = array_unique($arr);// 記錄結(jié)束時(shí)間$endtime = getMicrotime();$arr = array_values($arr);echo 'unique count:'.count($arr).'<br>';echo 'run time:'.(float)(($endtime-$starttime)*1000).'ms<br>';echo 'use memory:'.getUseMemory();/** * 獲取使用內(nèi)存 * @return float */function getUseMemory(){  $use_memory = round(memory_get_usage(true)/1024,2).'kb';  return $use_memory;}/** * 獲取microtime * @return float */function getMicrotime(){  list($usec, $sec) = explode(' ', microtime());  return (float)$usec + (float)$sec;}?>

unique count:99
run time:653.39303016663ms
use memory:5120kb

使用array_unique方法去重,運(yùn)行時(shí)間需要約650ms,內(nèi)存占用約5m

3.更快的數(shù)組去重方法

PHP有一個(gè)鍵值互換的方法array_flip,我們可以使用這個(gè)方法去重,因?yàn)殒I值互換,原來(lái)重復(fù)的值會(huì)變?yōu)橄嗤逆I。

然后再進(jìn)行一次鍵值互換,把鍵和值換回來(lái)則可以完成去重。

<?php$arr = array();// 創(chuàng)建100000個(gè)隨機(jī)元素的數(shù)組for($i=0; $i<100000; $i++){  $arr[] = mt_rand(1,99);}// 記錄開(kāi)始時(shí)間$starttime = getMicrotime();// 使用鍵值互換去重$arr = array_flip($arr);$arr = array_flip($arr);// 記錄結(jié)束時(shí)間$endtime = getMicrotime();$arr = array_values($arr);echo 'unique count:'.count($arr).'<br>';echo 'run time:'.(float)(($endtime-$starttime)*1000).'ms<br>';echo 'use memory:'.getUseMemory();/** * 獲取使用內(nèi)存 * @return float */function getUseMemory(){  $use_memory = round(memory_get_usage(true)/1024,2).'kb';  return $use_memory;}/** * 獲取microtime * @return float */function getMicrotime(){  list($usec, $sec) = explode(' ', microtime());  return (float)$usec + (float)$sec;}?>

unique count:99
run time:12.840032577515ms
use memory:768kb

使用array_flip方法去重,運(yùn)行時(shí)間需要約18ms,內(nèi)存占用約2m

因此使用array_flip方法去重比使用array_unique方法運(yùn)行時(shí)間減少98%,內(nèi)存占用減少4/5;

以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持VeVb武林網(wǎng)!


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到PHP教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 桃园市| 泰安市| 星座| 瓦房店市| 邓州市| 彭山县| 沧州市| 台前县| 洛扎县| 淳化县| 商丘市| 始兴县| 镇赉县| 鄂州市| 青铜峡市| 文山县| 棋牌| 江达县| 鄂州市| 达孜县| 鞍山市| 密云县| 同德县| 四平市| 治县。| 福清市| 日照市| 漾濞| 清河县| 德惠市| 巩留县| 中江县| 拉孜县| 沅江市| 东辽县| 新兴县| 和平县| 盈江县| 梁河县| 通辽市| 儋州市|