Unterstützt das Ändern der Länge
/**
* Generieren Sie eine eindeutige Bestellnummer
*
*/Funktion build_order_no(){<code class="prettyprint linenums lang-php">function build_order_no(){<br>
return date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8);<br>
}
return date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8);
}Kommentare:
Verwenden Sie uniqid, um eine eindeutige und eindeutige Zeichenfolge basierend auf der aktuellen Anzahl von Mikrosekunden zu generieren (aber die ersten 7 Ziffern scheinen sich für eine lange Zeit zu ändern, sodass Sie sie löschen können, ohne darüber nachzudenken), und nehmen Sie die 8. bis 13. Ziffer. Aber diese Zeichenfolge enthält englische Buchstaben. Was soll ich tun?
Verwenden Sie ord, um seinen ASCII-Code abzurufen. Daher gibt es den nächsten Schritt: Verwenden Sie str_split, um die Zeichenfolge in ein Array aufzuteilen, und verwenden Sie array_map für die (schnellere) Ausführung.
Was dann zurückgegeben wird, ist immer noch ein Array, KO, das mit implode in eine Zeichenfolge umgewandelt wird, aber die Zeichenlänge ist variabel. Nehmen Sie die ersten paar festen Ziffern und fügen Sie dann das aktuelle Jahr und das aktuelle Datum hinzu Diese Methode wird weltweit nicht verwendet. Wie viele Duplikate gibt es?
Wenn Sie die Serverzeit nicht nach vorne anpassen, haben Sie natürlich keine Angst davor, zwei Bestellungen in derselben Mikrosekunde aufzugeben, auch wenn Sie vor Ort sind.