Ich möchte einen eindeutigen Identifikator im folgenden numerischen Format erstellen:
%Vor%Beispiel:
%Vor%Wo:
YYYYMMDD ist ein aktueller Datumswert und anderer XXXX ist ein zufällig generierter Wert.
%Vor%Täglich benötigtes eindeutiges Volume ist etwa 100. Welche Methoden mit PHP sollte ich verwenden, um mögliche Duplikate in Rand-Werten zu verhindern oder alle IDs maximal einzigartig zu machen? Vielleicht möglich aktuelle Zeitfunktionen verwenden, um diese Zahlen in den letzten 4 Zeichen zu verdichten?
BEARBEITET: Eindeutiger Wert, der mit der MySQL-Datenbank als Hauptindex der Tabelle verbunden ist. Es sind Anfangswerte, die nicht mit irgendwelchen gespeicherten Informationen in der Datenbank verbunden sind.
Sie können sich nicht auf rand()
verlassen, Es besteht die Möglichkeit, dass Sie ein Duplikat erzeugen (ziemlich selten für ein rand(0,9999)
, um ein Duplikat zu erzeugen, aber das wird irgendwann passieren).
Also, anstatt für rand()
zu gehen, erstellen Sie einfach einen inkrementellen Wert (sagen wir ... beginnend bei 1) und hängen an das generierte Datum an.
Wenn du das nächste Mal eine neue ID generierst, nimm den inkrementellen Wert (sag, wenn du ihn irgendwo gespeichert hast. muss 1 richtig sein?) status, inkrementiere ihn und füge ihn an dein neues Datum an.
Sie können ein uniqid
, gekoppelt mit sha-1
und time
verwenden und ein substr()
für die ersten 4 Zeichen verwenden.
OUTPUT :
Ich musste etwas Ähnliches tun, eine Lösung, die Zeit behält und die ID auch einzigartig hält, und ich habe eine Lösung gefunden, um PHP
Funktion time()
gefällt das
$reference_number = 'BFF-' . time()
; Sie können BFF
in etwas ändern, das für Ihre Geschäftslogik sinnvoller ist.
Meine eindeutige Referenz-ID sieht wie BFF-1393327176
aus und die Zahl kann von Unix in Echtzeit konvertiert werden, was Ihnen Tue, 25 Feb 2014 11:19:36
Ich hoffe, das hilft
Wenn die eindeutigen Werte einmal generiert werden, müssen Sie nur eine bedingte Auswahl für den rand-Wert treffen und den Wert in einem Array speichern, das die Bedingung sein wird - mit Inarray -:
%Vor%Zur Kasse diese Demo .