長さの変更をサポート
/**
* 固有の注文番号を生成します
*
*/function build_order_no(){<br>
戻り値 date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8);<br>
}
注:
uniqid を使って現在のマイクロ秒数に基づいて生成された一意の文字列を取得し(ただし、最初の7桁は長期間変化するようなので、気にせず削除しても大丈夫です)、8桁目から13桁目までを取ります。しかし、この文字列には英語の文字が含まれているのですが、どうすればよいでしょうか?
ord を使用して ASCII コードを取得するため、次のステップがあります。str_split を使用して文字列を配列に分割し、array_map を使用して (高速に) 操作します。
この場合、返されるのは依然として配列 KO であり、これは implode を使用して文字列に変換されますが、文字の長さは可変であり、最初の固定の数桁を取得し、その前に現在の年と日付を追加します。このメソッドは世界中で使用されません。重複は何個ありますか。
もちろん、サーバー時間を早めに調整しない限り、たとえローカルであっても、同じマイクロ秒内に 2 つの注文を行うことはないと思います。