To deduplicate array elements, we generally use the array_unique method. This method can deduplicate the elements in the array.
<?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);?>
Output:
Array( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 [8] => 9)
After deduplication, the key values will be out of order. You can use array_values to reorder the key values.
<?php$arr = array();// 创建100000个随机元素的数组for($i=0; $i<100000; $i++){ $arr[] = mt_rand(1,99); }// 记录开始时间$starttime = getMicrotime();// 去重$arr = array_unique($arr);// 记录结束时间$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();/** * 获取使用内存 * @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
Use the array_unique method to remove duplicates. The running time takes about 650ms and the memory usage is about 5m
php has a key-value exchange method array_flip. We can use this method to deduplicate. Because of key-value exchange, the original duplicate values will become the same key.
Then perform a key-value exchange and exchange the keys and values back to complete deduplication.
<?php$arr = array();// 创建100000个随机元素的数组for($i=0; $i<100000; $i++){ $arr[] = mt_rand(1,99); }// 记录开始时间$starttime = getMicrotime();// 使用键值互换去重$arr = array_flip($arr);$arr = array_flip($arr);// 记录结束时间$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();/** * 获取使用内存 * @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
Use array_flip method to remove duplicates, the running time takes about 18ms, the memory usage is about 2m
. Therefore, using the array_flip method to remove duplicates takes longer than using the array_unique method. The running time is 98%, memory usage reduced4/5;
This article explains how to achieve the rapid deduplication effect of PHP array elements. For more related content, please pay attention to the PHP Chinese website.
Related recommendations:
How to find array elements through php to improve efficiency
About mysql strict mode Strict Mode Explanation
#php uses explode to split strings. Explanation of issues that novices easily overlook
The above is the detailed content of How to achieve quick deduplication effect of php array elements. For more information, please follow other related articles on the PHP Chinese website!