Maison  >  Article  >  développement back-end  >  Comment supprimer rapidement les éléments en double des tableaux php

Comment supprimer rapidement les éléments en double des tableaux php

墨辰丷
墨辰丷original
2018-05-22 16:55:332026parcourir

Cet article présente principalement la méthode de déduplication rapide des éléments d'un tableau PHP, qui a une bonne valeur de référence. Jetons un coup d'œil avec l'éditeur ci-dessous

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, en utilisant This. La méthode 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);
?>

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, la valeur clé Si ce n'est pas dans l'ordre, 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
run time :653.39303016663ms
use memory:5120kb

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 . 🎜>5m

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, car le les valeurs de clé s'excluent mutuellement, la valeur dupliquée d'origine deviendra 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;
}
?>

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

utiliser La méthode array_flip prend environ 18 ms à exécuter et l'utilisation de la mémoire est d'environ 2 m

Par conséquent, la méthode array_flip est utilisée. pour supprimer les doublons. array_unique temps d'exécution de la méthode réduit de 98%, utilisation de la mémoire réduite de 4/5;

Recommandations associées :

Comment utiliser array_sum() pour calculer la somme des éléments du tableauvaleurs

accès Éléments du tableauComment gérer les erreurs

Objet d'opération jqueryÉléments du tableauRésumé de la méthode (avec cas)

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