Heim > Artikel > Backend-Entwicklung > Ausführliche Erklärung, wie PHP Millionen von Daten schnell sortieren kann
Bei meiner täglichen Arbeit erhalte ich häufig Benachrichtigungen zum Versenden von Gruppennachrichten an Website-Mitglieder über In-Site-Briefe, Mobiltelefon-SMS und E-Mails. Die Benutzerliste wird normalerweise von anderen Kollegen bereitgestellt, und es kommt zwangsläufig zu Duplikaten. Um wiederholtes Senden zu vermeiden, muss ich die von ihnen bereitgestellte Benutzerliste deduplizieren, bevor ich Informationen sende. Als nächstes werde ich die UID-Liste verwenden, um darüber zu sprechen, wie ich das PHP-Array zum Deduplizieren verwende. Ich hoffe, es hilft allen.
Wenn Sie eine UID-Liste mit mehr als einer Million Zeilen erhalten, lautet das Format wie folgt:
10001000 10001001 10001002 ...... 10001000 ...... 10001111
Tatsächlich ist es mithilfe der Eigenschaften von PHP-Arrays einfach, eine Deduplizierung durchzuführen Schauen wir uns zunächst die Definition von PHP an: Ein Array ist in PHP eigentlich eine geordnete Karte. Eine Karte ist ein Typ, der Schlüsseln Werte zuordnet. Dieser Typ ist in vielerlei Hinsicht optimiert, sodass er als echtes Array oder als Liste (Vektor), Hash-Tabelle (Implementierung einer Karte), Wörterbuch, Menge, Stapel, Warteschlange usw. behandelt werden kann mehr Möglichkeiten. Der Wert eines Array-Elements kann auch ein anderes Array sein. Baumstrukturen und mehrdimensionale Arrays sind ebenfalls zulässig.
In PHP-Arrays werden Schlüssel auch als Indizes bezeichnet und sind eindeutig. Wir können diese Funktion verwenden, um eine Deduplizierung durchzuführen:
<?php //定义一个数组,用于存放排重后的结果 $result = array(); //读取uid列表文件 $fp = fopen('test.txt', 'r'); while(!feof($fp)) { $uid = fgets($fp); $uid = trim($uid); $uid = trim($uid, "\r"); $uid = trim($uid, "\n"); if($uid == '') { continue; } //以uid为key去看该值是否存在 if(empty($result[$uid])) { $result[$uid] = 1; } } fclose($fp); //将结果保存到文件 $content = ''; foreach($result as $k => $v) { $content .= $k."\n"; } $fp = fopen('result.txt', 'w'); fwrite($fp, $content); fclose($fp); ?>
Mehr als 20 Zeilen Code sind möglich Die Deduplizierung von mehr als einer Million Daten ist ebenfalls gut und sehr praktisch. Auch Mobiltelefonnummern und E-Mails können auf diese Weise dedupliziert werden.
Diese Methode kann auch zum Deduplizieren von zwei Dateien verwendet werden. Das Format ist das gleiche wie bei der obigen UID-Liste:
<?php //定义数组,用于存放排重后的结果 $result = array(); //读取第一个uid列表文件,放入$result_1 $fp = fopen('test_1.txt', 'r'); while(!feof($fp)) { $uid = fgets($fp); $uid = trim($uid); $uid = trim($uid, "\r"); $uid = trim($uid, "\n"); if($uid == '') { continue; } //以uid为key写入$result,如有重复就会覆盖 $result[$uid] = 1; } fclose($fp); //读取第二个uid列表文件,并进行排重操作 $fp = fopen('test_2.txt', 'r'); while(!feof($fp)) { $uid = fgets($fp); $uid = trim($uid); $uid = trim($uid, "\r"); $uid = trim($uid, "\n"); if($uid == '') { continue; } //以uid为key去看该值是否存在 if(empty($result[$uid])) { $result[$uid] = 1; } } fclose($fp); //$result里保存的就排重以后的结果,可以输出到文件,代码省略 ?>
Wenn Sie sorgfältig darüber nachdenken, ist es nicht schwer festzustellen, dass die Verwendung dieser Array-Funktion weitere Probleme in unserer Arbeit lösen kann.
Das obige ist der detaillierte Inhalt vonAusführliche Erklärung, wie PHP Millionen von Daten schnell sortieren kann. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!