Maison  >  Article  >  développement back-end  >  Comment supprimer rapidement les données en double en php

Comment supprimer rapidement les données en double en php

藏色散人
藏色散人original
2020-08-13 10:38:176337parcourir

Comment supprimer les données en double en PHP : 1. Utilisez la méthode "array_unique" pour dédupliquer les éléments du tableau et utilisez la fonction "array_values" pour réorganiser les valeurs clés ; 2. Utilisez la méthode "array_flip" pour dédupliquer ; .

Comment supprimer rapidement les données en double en php

Recommandé : "Tutoriel vidéo PHP"

php Supprimez rapidement les doublons des éléments du tableau

1. Utilisez la méthode array_unique pour dédupliquer

Pour dédupliquer les éléments du tableau, nous utilisons généralement la méthode array_unique. Cette méthode peut dédupliquer les éléments du tableau.

<?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);
?>

Sortie :

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

Après la déduplication, les valeurs clés seront dans le désordre. Vous pouvez utiliser array_values ​​​​pour réorganiser les valeurs clés.

2. Efficacité de la déduplication à l'aide de la méthode 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;
}
?>
unique count:99
run time:653.39303016663ms
use memory:5120kb

En utilisant la méthode array_unique pour la déduplication, le temps d'exécution prend environ 650 ms et l'utilisation de la mémoire est d'environ 5 m

3. déduplication Méthode de duplication

php a une méthode d'échange clé-valeur array_flip Nous pouvons utiliser cette méthode pour supprimer les doublons. En raison de l'échange clé-valeur, les valeurs en double d'origine deviendront la même clé.

Ensuite, effectuez un échange clé-valeur et échangez les clés et les valeurs pour terminer la déduplication.

<?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;
}
?>
rrree

En utilisant la méthode array_flip pour dédupliquer, le temps d'exécution prend environ 18 ms et l'utilisation de la mémoire est d'environ 2 m

Par conséquent, en utilisant la méthode array_flip pour dédupliquer, le temps d'exécution est 98 % plus court que en utilisant la méthode array_unique, et l'utilisation de la mémoire est réduite de 4/5 ;

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn