6、生成唯一标识符
某些场景下,可能需要生成一个唯一的字符串。我看到很多人使用 md5() 函数,即使它并不完全意味着这个目的:
// generate unique string echo md5(time() . mt_rand(1,1000000));
There is actually a PHP function named uniqid() that is meant to be used for this.
// generate unique string echo uniqid(); /* prints 4bd67c947233e */ // generate another unique string echo uniqid(); /* prints 4bd67c9472340 */
你可能会注意到,尽管字符串是唯一的,前几个字符却是类似的,这是因为生成的字符串与服务器时间相关。但实际上也存在友好的一方面,由于每个新生成的 ID 会按字母顺序排列,这样排序就变得很简单。为了减少重复的概率,你可以传递一个前缀,或第二个参数来增加熵:
// with prefix echo uniqid('foo_'); /* prints foo_4bd67d6cd8b8f */ // with more entropy echo uniqid('',true); /* prints 4bd67d6cd8b926.12135106 */ // both echo uniqid('bar_',true); /* prints bar_4bd67da367b650.43684647 */
这个函数将产生比 md5() 更短的字符串,能节省一些空间。
延伸阅读:
php数组应用技巧
php技巧:ini_get的用法
strtotime的使用技巧
实例详解PHP serialize与JSON解析
PHP序列化 serialize 格式详解
php中fread()函数使用技巧
foreach遍历数组时使用引用的技巧
php时间函数使用技巧
PHP中JSON技巧讲解