Unique ID with time()

好久不见. 提交于 2019-12-06 03:33:43

问题


If I use:

$t = time();
echo $t;

This will output something like: 1319390934

I have two questions:

  1. This value can be used as unique id ?
  2. how to generate from it a date?

I can't use uniqid(), because I need a value that can be used to order (recent).


回答1:


Using time() as mentioned will give you a sortable way to create unique IDs. Concatenating strings will also further randomize your desired result and still keep it sortable:

$uniqueId= time().'-'.mt_rand();



回答2:


  1. Obviously this cannot be used as a "unique" id because, well, it's not unique during the duration of the same second.
  2. Look into date.

If you want something that is advertised as a unique id and both can be sorted, you can use something like this that involves uniqid:

$u = time().'-'.uniqid(true);

I 'm perhaps over-simplifying here, taking for granted that all values time is going to produce will have the same number of digits (so that a string sort would produce the same results as a natural sort). If you don't want to make this assumption, then you could consider

$u = sprintf("%010s-%s", time(), uniqid(true));



回答3:


If you are using this code in an environment where you have a user account with a unique ID, you can append time() to their account ID to generate a unique ID.

You can turn time() back into a date string using:

$time = time();
echo 'The datestamp for (' . $time . ') is ' . date("Y-m-d", $time);

Of course the date format can be altered using any of PHP's date() format.



来源:https://stackoverflow.com/questions/7867874/unique-id-with-time

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!