在网上找了一番,发现这位同学的想法挺不错的,redtamo,具体的请稳步过去看看,我作简要概述,该方法用上了英文字母、年月日、Unix 时间戳和微秒数、随机数,重复的可能性大大降低,还是很不错的。使用字母很有代表性,一个字母对应一个年份,总共16位,不多也不少.
1.
复制代码 代码如下:<?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));
?>
生成效果:
A422694333616096
2.
复制代码 代码如下:<?php
function build_order_no(){
return date("Ymd").substr(implode(NULL, array_map("ord", str_split(substr(uniqid(), 7, 13), 1))), 0, 8);
}
echo build_order_no();
?>
输出结果:
20140623561004852014062349535399
以上所述就是本文的全部内容了,希望大家能够喜欢。