Heim  >  Artikel  >  Backend-Entwicklung  >  So entfernen Sie schnell Duplikate aus PHP-Array-Elementen

So entfernen Sie schnell Duplikate aus PHP-Array-Elementen

墨辰丷
墨辰丷Original
2018-05-22 16:55:332026Durchsuche

In diesem Artikel wird hauptsächlich die Methode zur schnellen Deduplizierung von PHP-Array-Elementen vorgestellt, die einen guten Referenzwert hat. Schauen wir es uns mit dem Editor unten an

1 Verwenden Sie die Methode array_unique zum Deduplizieren

Um Array-Elemente zu deduplizieren, verwenden wir im Allgemeinen die Methode array_unique mit This Die Methode kann 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 Außerhalb der Reihenfolge können Sie array_values ​​verwenden, um die Schlüsselwerte neu anzuordnen.

2. Verwenden Sie die Methode array_unique, um die Duplizierungseffizienz zu entfernen

<?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
Laufzeit: 653,39303016663 ms
Speicher verwenden: 5120 KB

Verwenden Sie die Methode array_unique, um Duplikate zu entfernen. Die Laufzeit beträgt ca. 650 ms und die Speichernutzung beträgt ca. 5m

3. Schnellere Array-Deduplizierungsmethode

PHP verfügt über eine Schlüsselwert-Austauschmethode array_flip, weil Schlüsselwert AustauschDer ursprüngliche doppelte Wert wird zum gleichen Schlüssel.

Führen Sie dann einen Schlüsselwertaustausch durch und tauschen Sie die Schlüssel und Werte zurück, um die Deduplizierung abzuschließen.

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

Eindeutige Anzahl:99
Laufzeit:12,840032577515ms
Speicher verwenden:768kb

Verwenden Sie array_flipMethode zum Entfernen von Duplikaten, die Laufzeit beträgt etwa 18 ms und die Speichernutzung beträgt etwa 2 m

Daher wird der array_flip verwendet Die Methode zum Entfernen von Duplikaten ist besser als die Verwendung von array_unique. Die Laufzeit der Methode wurde um 98 % reduziert, die Speichernutzung wurde um 4/5 reduziert;

Verwandte Empfehlungen:

So verwenden Sie array_sum(), um die Summe von Array-ElementWerten

Fehler beim Zugriff auf Array-Element in doppelten Anführungszeichen in PHP. Wie man mit

JQuery-Operationsobjekt Array-Element Methodenzusammenfassung umgeht ( mit Etui)

Das obige ist der detaillierte Inhalt vonSo entfernen Sie schnell Duplikate aus PHP-Array-Elementen. 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