Heim >Backend-Entwicklung >PHP-Problem >So generieren Sie eindeutige Seriennummern in PHP
So generieren Sie eindeutige Seriennummern in PHP: 1. Generieren Sie eindeutige Seriennummern durch „str_pad(mt_rand(1, 99999), 5, ‚0‘, STR_PAD_LEFT);“; 2. Durch implode und array_map usw. Funktionsimplementierung generiert eindeutige Sequenznummern.
Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP Version 7.1, DELL G3-Computer.
Eine Zusammenfassung, wie PHP eindeutige und sich nicht wiederholende Zahlen generiert
Wie generiert PHP eindeutige und sich nicht wiederholende Zahlen? Bei Bestellungen ist es beispielsweise oft erforderlich, dass wir eine eindeutige Nummer generieren. Unter normalen Umständen kann die von PHP bereitgestellte uniqid() die Anforderungen erfüllen, aber in Zeiten hoher Parallelität benötigen wir eine bessere Lösung, um eindeutige und sich nicht wiederholende Zahlen zu generieren. In diesem Artikel wird Beispielcode vorgestellt. Ich hoffe, er ist für alle hilfreich.
Ich hatte vor einiger Zeit ein E-Commerce-Projekt und musste eine Bestellnummer generieren. Die damalige Überlegung war einfach: Nehmen Sie sich die Systemzeit und fügen Sie eine Zufallszahl hinzu oder verwenden Sie die Methode uniqid(). Überlegen Sie sich die oben beschriebene Methode sorgfältig, wenn der Kunde eine kleine Menge kauft. Es ist jedoch sehr wahrscheinlich, dass es zu Duplikaten von Bestellnummern kommt, die während der Hauptkaufzeit generiert werden.
Erster Typ
return date('Ymd') . str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT);
Zweiter Typ
return date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8);
Dritter Typ
//生成24位唯一订单号码,格式:YYYY-MMDD-HHII-SS-NNNN,NNNN-CC,其中:YYYY=年份,MM=月份,DD=日期,HH=24格式小时,II=分,SS=秒,NNNNNNNN=随机数,CC=检查码 @date_default_timezone_set("PRC"); while(true){ //订购日期 $order_date = date('Y-m-d'); //订单号码主体(YYYYMMDDHHIISSNNNNNNNN) $order_id_main = date('YmdHis') . rand(10000000,99999999); //订单号码主体长度 $order_id_len = strlen($order_id_main); $order_id_sum = 0; for($i=0; $i<$order_id_len; $i++){ $order_id_sum += (int)(substr($order_id_main,$i,1)); } //唯一订单号码(YYYYMMDDHHIISSNNNNNNNNCC) $order_id = $order_id_main . str_pad((100 - $order_id_sum % 100) % 100,2,'0',STR_PAD_LEFT);
Vierter Typ:
Ich habe online gesucht und festgestellt, dass die Idee dieses Klassenkameraden ziemlich gut, redtamo, spezifisch ist. Bitte schauen Sie mal rein gibt einen kurzen Überblick. Diese Methode verwendet englische Buchstaben, Jahr, Monat und Tag, Unix-Zeitstempel, Mikrosekunden und Zufallszahlen, was immer noch sehr gut ist. Die Verwendung von Buchstaben ist sehr repräsentativ, ein Buchstabe entspricht einer Jahreszahl, insgesamt 16 Ziffern, nicht mehr und nicht weniger, haha.
<?php $yCode = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'); $orderSn = $yCode[intval(date('Y')) - 2011] . strtoupper(dechex(date('m'))) . date('d') . substr(time(), -5) . substr(microtime(), 2, 5) . sprintf('%02d', rand(0, 99)); ?>
Generierungseffekt:
A422694333616096
Schade, dass diese Methode im endgültigen Projekt nicht verwendet wurde, da es keinen Grund gab, es so kompliziert zu machen, - -!
Die oben genannten vier Methoden sind alle Inhalte, die in diesem Artikel mit Ihnen geteilt werden. Ich hoffe, dass sie Ihnen gefallen werden.
【Empfohlen: PHP-Video-Tutorial】
Das obige ist der detaillierte Inhalt vonSo generieren Sie eindeutige Seriennummern in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!