php生成唯一數字
A. 如何用phpfor循環生成5位,數字字母組合,永不不重復
如果你希望永不重復 建議採用 PHP GUID
GUID是什麼
GUID: 即Globally Unique Identifier(全球唯一標識符) 也稱作 UUID(Universally Unique IDentifier) 。 GUID是一個通過特定演算法產生的二進制長度為128位的數字標識符,用於指示產品的唯一性。GUID 主要用於在擁有多個節點、多台計算機的網路或系統中,分配必須具有唯一性的標識符。
PHP中並不提供GUID的內部實現。為此我們可以自己寫演算法實現。代碼片段如下:
function create_guid() {
$charid = strtoupper(md5(uniqid(mt_rand(), true)));
$hyphen = chr(45);// "-"
$uuid = chr(123)// "{"
.substr($charid, 0, 8).$hyphen
.substr($charid, 8, 4).$hyphen
.substr($charid,12, 4).$hyphen
.substr($charid,16, 4).$hyphen
.substr($charid,20,12)
.chr(125);// "}"
return $uuid;
}
B. PHP生成10位左右,數字、字母混合的字元串且唯一
$yCode = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J');
$orderSn =
$yCode[intval(date('Y')) - 2017] . strtoupper(dechex(date('m'))) . date(
'd') . substr(time(), -5) . substr(microtime(), 2, 5) . sprintf(
'%02d', rand(0, 99));
C. php 隨機生成不重復用戶ID
php可以使用uniqid函數生成唯一的ID
uniqid — 生成一個唯一ID
stringuniqid([string$prefix=""[,bool$more_entropy=false]])
獲取一個帶前綴、基於當前時間微秒數的唯一ID。
參數說明:
prefix:有用的參數。例如:如果在多台主機上可能在同一微秒生成唯一ID。
prefix為空,則返回的字元串長度為13。more_entropy 為 TRUE,則返回的字元串長度為23。
more_entropy:如果設置為 TRUE,uniqid() 會在返回的字元串結尾增加額外的煽(使用combined linear congruential generator)。使得唯一ID更具唯一性。
返回值:
返回字元串形式的唯一ID。
D. PHP的uniqid函數產生的id真的是唯一的么
生成唯一ID的應用場景非常普遍,如臨時緩存文件名稱,臨時變數,臨時安全碼等,uniqid()函數基於以微秒計的當前時間,生成一個唯一的 ID。由於生成唯一ID與微秒時間關聯,因此ID的唯一性非常可靠。
生成的唯一ID默認返回的字元串有 13 個字元串長,如果不定義唯一ID的前綴,最多可返回23個字元串長,如果再結合md5()函數,生成的唯一ID可靠性將更高,這種生成的ID比隨機性的ID 最大優點在於可實現排序,特別是一些需要存儲在資料庫中的值。
E. php 生成唯一id的幾種解決方法
1、md5(time() . mt_rand(1,1000000));
這種方法有一定的概率會出現重復
2、php內置函數uniqid()
uniqid() 函數基於以微秒計的當前時間,生成一個唯一的 ID.
方法返回結果類似:5DDB650F-4389-F4A9-A100-501EF1348872
F. thinkphp怎麼生成唯一標識
1、md5(time() . mt_rand(1,1000000));
這種方法有一定的概率會出現重復
2、php內置函數uniqid()
uniqid() 函數基於以微秒計的當前時間,生成一個唯一的 ID.
w3school參考手冊有一句話:"由於基於系統時間,通過該函數生成的 ID 不是最佳的。如需生成絕對唯一的 ID,請使用 md5() 函數"。
3、官方uniqid()參考手冊有用戶提供的方法,結果類似:{E2DFFFB3-571E-6CFC-4B5C-9FEDAAF2EFD7}
public function create_guid($namespace = '') {
static $guid = '';
$uid = uniqid("", true);
$data = $namespace;
$data .= $_SERVER['REQUEST_TIME'];
$data .= $_SERVER['HTTP_USER_AGENT'];
$data .= $_SERVER['LOCAL_ADDR'];
$data .= $_SERVER['LOCAL_PORT'];
$data .= $_SERVER['REMOTE_ADDR'];
$data .= $_SERVER['REMOTE_PORT'];
$hash = strtoupper(hash('ripemd128', $uid . $guid . md5($data)));
$guid = '{' .
substr($hash, 0, 8) .
'-' .
substr($hash, 8, 4) .
'-' .
substr($hash, 12, 4) .
'-' .
substr($hash, 16, 4) .
'-' .
substr($hash, 20, 12) .
'}';
return $guid;
}
G. php生成8位唯一字元串
functionget62($src,$length=8){
$md5=md5($src,true);
$pos=0;
$res="";
while(strlen($res)<$length&&($bin=substr($md5,$pos,4))!=""){
$uint=sprintf("%u",unpack("Nint",$bin)['int']);
$res.=decto62($uint);
$pos+=4;
}
returnsubstr($res,0,$length);
}
functiondecto62($src){
static$table=[];
$table=array_merge(range(0,9),range('A',"Z"),range('a',"z"));
$arr62=[];
$div=$src;
do{
$mod=$div%62;
array_unshift($arr62,$table[$mod]);
$div=intval($div/62);
}while($div!=0);
returnimplode("",$arr62);
}
var_mp(get62("abc"));
H. PHP怎麼生成唯一的隨機數
可以使用毫秒數時間戳加上一個四位的隨機數 這樣理論上是不可能出現重復的
I. php產生唯一數字,並在資料庫裡面檢查是否重復,如果重復則重新生成,怎麼實現
在資料庫中將該欄位設為 unique
php提交時 如果重復則會 返回false
此時在php函數中重新生成
J. 如何使用php生成唯一ID的4種方法
方法1
<?php
$numbers=range(1,50);
//shuffle將數組順序隨即打亂
shuffle($numbers);
//array_slice取該數組中的某一段
$num=6;
$result=array_slice($numbers,0,$num);
print_r($result);
?>
方法二
<?php
$numbers=range(1,20);
//播下隨機數發生器種子,可有可無,測試後對結果沒有影響
srand((float)microtime()*1000000);
shuffle($numbers);
//跳過list第一個值(保存的是索引)
while(list(,$number)=each($numbers)){
echo"$number";
}
?>
方法三
<?php
functionNoRand($begin=0,$end=20,$limit=5){
$rand_array=range($begin,$end);
shuffle($rand_array);//調用現成的數組隨機排列函數
returnarray_slice($rand_array,0,$limit);//截取前$limit個
}
print_r(NoRand());
?>
方法四
<?php
$tmp=array();
while(count($tmp)<5){
$tmp[]=mt_rand(1,20);
$tmp=array_unique($tmp);
}
print_r($tmp);
?>
方法五
<?php
$tmp=range(1,30);
print_r(array_rand($tmp,10));
?>
都在這咯,希望可以幫到你