So entfernen Sie doppelte Daten in PHP: 1. Verwenden Sie die Methode „array_unique“, um Array-Elemente zu deduplizieren, und verwenden Sie die Funktion „array_values“, um die Schlüsselwerte neu anzuordnen. 2. Verwenden Sie die Methode „array_flip“, um zu deduplizieren.
Empfohlen: „PHP-Video-Tutorial“
php Schnelle Deduplizierung von Array-Elementen
1. Verwenden Sie die Methode array_unique zum Deduplizieren.
Um Array-Elemente zu deduplizieren, verwenden wir im Allgemeinen die Methode array_unique Mit dieser Methode können Sie doppelte Elemente aus dem Array entfernen.
<?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); ?>
Ausgabe:
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 [8] => 9 )
Nach der Deduplizierung sind die Schlüsselwerte nicht in der richtigen Reihenfolge. Sie können array_values verwenden, um die Schlüsselwerte neu anzuordnen.
2. Effizienz der Deduplizierung mit der Methode array_unique
<?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; } ?>
Bei Verwendung der Methode array_unique dauert die Deduplizierung etwa 650 ms, die Speichernutzung beträgt etwa 5 m.
PHP verfügt über eine Schlüsselwertaustauschmethode array_flip Mit dieser Methode können Duplikate entfernt werden, da die Schlüsselwerte ausgetauscht werden und die ursprünglichen Duplikatwerte zum gleichen Schlüssel werden.
Führen Sie dann einen Schlüsselwertaustausch durch und tauschen Sie die Schlüssel und Werte zurück, um die Deduplizierung abzuschließen.
unique count:99 run time:653.39303016663ms use memory:5120kb
<?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; } ?>
Bei Verwendung der array_flip-Methode zum Deduplizieren beträgt die Laufzeit etwa 18 ms und die Speichernutzung beträgt etwa 2 m.
Die Verwendung der array_flip-Methode zum Deduplizieren ist also 98 % kürzer als die Verwendung der array_unique-Methode und die Speichernutzung wird um reduziert 4/5;
Das obige ist der detaillierte Inhalt vonSo entfernen Sie schnell doppelte Daten in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!