订单号生成

1、

$sn = date('Ymd') . str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT);

2、

$sn  = date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8); 

3、雪花算法

public function sn(){
    //假设一个机器id
    $machineId = 123456789;
    //41bit timestamp(毫秒)
    $time = floor(microtime(true) * 1000);
    //0bit 未使用
    $suffix = 0;
    //datacenterId  添加数据的时间
    $base = decbin(pow(2,40) - 1 + $time);
    //workerId  机器ID
    $machineid = decbin(pow(2,9) - 1 + $machineId);
    //毫秒类的计数
    $random = mt_rand(1, pow(2,11)-1);
    $random = decbin(pow(2,11)-1 + $random);
    //拼装所有数据
    $base64 = $suffix.$base.$machineid.$random;
    //将二进制转换int
    $base64 = bindec($base64);
    $id = sprintf('%.0f', $base64);
    return $id;
}

4、

5、

#yCode 可以按照自己的实际情况调整
$yCode = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J','I','K','L','Q','W','R','T','Y','U');
$sn = $yCode[intval(date('Y')) - 2011] . strtoupper(dechex(date('m'))) . date('d') . substr(time(), -5) . substr(microtime(), 2, 5) . sprintf('%02d', rand(0, 99));

你可能感兴趣的:(php)