Maison > développement back-end > Problème PHP > Comment implémenter la déduplication de tableau en php

Comment implémenter la déduplication de tableau en php

藏色散人
Libérer: 2023-03-14 19:44:02
original
11358 Les gens l'ont consulté

Comment implémenter la déduplication de tableau en PHP : 1. Utilisez la méthode array_unique pour dédupliquer les éléments du tableau ; 2. Utilisez la méthode array_flip pour dédupliquer.

Comment implémenter la déduplication de tableau en php

L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.1, ordinateur DELL G3

php Déduplication rapide des éléments du tableau

1 Utilisez la méthode array_unique pour dédupliquer

Déduplication des éléments du tableau. , Nous utilisons généralement la méthode array_unique, qui peut supprimer les éléments en double 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);
?>
Copier après la connexion

Sortie :

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
    [6] => 7
    [7] => 8
    [8] => 9
)
Copier après la connexion

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. Utilisez la méthode array_unique pour supprimer l'efficacité de la duplication

<?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;
}
?>
Copier après la connexion
unique count:99
run time:653.39303016663ms
use memory:5120kb
Copier après la connexion

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

3. a une clé La méthode d'échange de valeurs est 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;
}
?>
Copier après la connexion
unique count:99
run time:12.840032577515ms
use memory:768kb
Copier après la connexion
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

Donc, l'utilisation de la méthode array_flip pour dédupliquer le temps d'exécution est 98 % plus courte que l'utilisation de la méthode array_unique, et l'utilisation de la mémoire est réduit de 4/5 ;

Apprentissage recommandé : "

Tutoriel vidéo PHP

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!

Étiquettes associées:
php
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal