Heim >Backend-Entwicklung >PHP-Problem >So entfernen Sie schnell doppelte Daten in PHP

So entfernen Sie schnell doppelte Daten in PHP

藏色散人
藏色散人Original
2020-08-13 10:38:176355Durchsuche

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.

So entfernen Sie schnell doppelte Daten in PHP

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 &#39;unique count:&#39;.count($arr).&#39;<br>&#39;;
echo &#39;run time:&#39;.(float)(($endtime-$starttime)*1000).&#39;ms<br>&#39;;
echo &#39;use memory:&#39;.getUseMemory();
/**
 * 获取使用内存
 * @return float
 */
function getUseMemory(){
    $use_memory = round(memory_get_usage(true)/1024,2).&#39;kb&#39;;
    return $use_memory;
}
/**
 * 获取microtime
 * @return float
 */
function getMicrotime(){
    list($usec, $sec) = explode(&#39; &#39;, microtime());
    return (float)$usec + (float)$sec;
}
?>
rrree

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 &#39;unique count:&#39;.count($arr).&#39;<br>&#39;;
echo &#39;run time:&#39;.(float)(($endtime-$starttime)*1000).&#39;ms<br>&#39;;
echo &#39;use memory:&#39;.getUseMemory();
/**
 * 获取使用内存
 * @return float
 */
function getUseMemory(){
    $use_memory = round(memory_get_usage(true)/1024,2).&#39;kb&#39;;
    return $use_memory;
}
/**
 * 获取microtime
 * @return float
 */
function getMicrotime(){
    list($usec, $sec) = explode(&#39; &#39;, 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn