Maison >développement back-end >Problème PHP >Comment supprimer les doublons du tableau php

Comment supprimer les doublons du tableau php

藏色散人
藏色散人original
2020-10-30 09:38:562343parcourir

Comment supprimer les valeurs en double d'un tableau PHP : créez d'abord un exemple de fichier PHP ; puis définissez un tableau et enfin utilisez la méthode "array_unique($arr);" les éléments du tableau.

Comment supprimer les doublons du tableau php

Recommandé : "Vidéo PHP Tutoriel

1. Utiliser 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, utiliser cette méthode peut supprimer les éléments en double d'un 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. 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;
}
?>

compte unique : 99
durée d'exécution : 653,39303016663 ms
utiliser la mémoire : 5 120 Ko

Utilisez la méthode array_unique pour supprimer les doublons. Le temps d'exécution prend environ 650 ms et l'utilisation de la mémoire est d'environ 5 min

3. Méthode de déduplication de tableau plus rapide

php a une méthode d'échange clé-valeur array_flip Nous pouvons utiliser cette méthode pour dédupliquer la copie d'origine. les valeurs deviendront pour la même clé.

Effectuez ensuite un échange clé-valeur, puis é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;
}
?>

compte unique :99

durée d'exécution :12,840032577515ms
utiliser la mémoire :768 Ko

Utilisez la méthode

array_flip pour supprimer les doublons, le temps d'exécution prend environ 18 ms, l'utilisation de la mémoire est d'environ 2 m

, donc utiliser la méthode

array_flip pour dédupliquer le temps d'exécution est plus courte que d'utiliser la méthode array_unique 98%, utilisation de la mémoire réduite4/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