下面是一个生成唯一订单的方法,这个方法是在某二开框架中截取的,自认为比较有效好用,所以保存下来,也在多次使用.
//生成计划单号
public function createNO($table, $prefix)
{
$billno = date('YmdHis') . $this->random(6, true);
while (1) {
$count = count($this->getSgTable($table)->savingsplanwhere(array('plan_id'=>$billno)));
if ($count <= 0) {
break;
}
$billno = date('YmdHis') . $this->random(6, true);
}
return $prefix . $billno;
}
//生成任意N位数
public function random($length, $numeric = FALSE) {
$seed = base_convert(md5(microtime() . $_SERVER['DOCUMENT_ROOT']), 16, $numeric ? 10 : 35);
$seed = $numeric ? (str_replace('0', '', $seed) . '012340567890') : ($seed . 'zZ' . strtoupper($seed));
if ($numeric) {
$hash = '';
} else {
$hash = chr(rand(1, 26) + rand(0, 1) * 32 + 64);
$length--;
}
$max = strlen($seed) - 1;
for ($i = 0; $i < $length; $i++) {
$hash .= $seed{mt_rand(0, $max)};
}
return $hash;
}
因为方法是摘自某二开框架,如果有侵权,请联系我删除,我只是为了自己做个笔记和给大家提供一个方便,并非商用.