工作中使用到唯一ID的場景非常多,例如臨時快取檔案、臨時變數、臨時安全碼等。
uniqid()函數是基於以微妙計的當前時間,產生一個唯一的ID。由於產生唯一ID與微妙時間關聯,因此生成ID的唯一性非常可靠。
產生的唯一ID預設回傳的字串有13個字元長,如果再結合MD5()函數,產生的唯一ID可靠性會更高,這種產生的ID比隨機性的ID最大優點在於可實現排序,特別是一些需要儲存在資料庫中的值。當然在這裡也可以加入隨機數字。
以下主要介紹4種產生唯一ID的方法:
1、md5(time().mt_rand(1,1000000))
注意:這個方法有一定的機率會出現重複
2、php內建函數uniqid()
uniqid()函數基於以微妙的當前時間,產生一個唯一的ID。
echo uniqid(); echo uniqid(); echo uniqid(); OUTPUT: 5a4b62dd4aeea 5a4b62dd4aff7 5a4b62dd4b069
w3school參考手冊有一句話:"由於基於系統時間,透過此函數產生的 ID 不是最佳的。如需產生絕對唯一的 ID,請使用 md5() 函數"。
(免費影片教學:php影片教學)
3、結合md5()函數產生一個唯一的ID
echo md5(uniqid()); OUTPUT: 0ac3d6e99b7f5290c93d730eaf9d7d94
4、手動去處理,官方給予的案例
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; }
返回結果類似:E2DFFFB3-571E-6CFC-4B5C-9FEDAAF2EFD7
相關推薦:php教程
#以上是php產生唯一ID的四種方法介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!