PHP-字符串到int

PHP-字符串到int,php,casting,Php,Casting,我必须根据时间、计数器和随机前置值从1到10生成唯一ID。我生成它的方式: $time = (int)(time()+$i); $time = $time.(rand(1,9)); //At this step we have strings looking like this: "13480835672" //This is time in first iteration "13480835672" //This is time in second iteration //But if I c

我必须根据时间、计数器和随机前置值从1到10生成唯一ID。我生成它的方式:

$time = (int)(time()+$i);
$time = $time.(rand(1,9));
//At this step we have strings looking like this:
"13480835672" //This is time in first iteration
"13480835672" //This is time in second iteration
//But if I convert it to int 
$time = (int)$time;
2147483647 //This is time converted in first iteration
2147483647 //This is time converted in second iteration
如你所见,上述时间是相同的。都是。这里缺少什么?

用于获取函数发生的准确时间

您还应该使用以获得正确的随机返回。

2147483647是您的操作系统/php二进制文件可以使用的最大(有符号)整数

2147483647*2=2^32,这意味着您的操作系统/php二进制文件可以工作32位

在上面的解释中,我将乘以2,因为php使用的整数是有符号的,这意味着它们跨越整数的负轴和正轴


使用浮点值,如
microtime(TRUE)
返回的浮点值,您可以处理更大的数字。

如果需要更大的数字,您可能需要查看BCMath@Mark。使用外部库处理类似的事情很麻烦。GMP和BCMath用于大量算术和代数,他似乎不需要这些。一个大的浮点数就可以了,或者把它作为一个字符串保存。这仍然取决于,他想用这个id做什么。这就是为什么我没有把它作为一个答案,而是作为一个评论发布。从我目前的观点来看,uniqid(加上主机特定值等)或MD5值是最好的解决方案,但我不想在没有进一步信息的情况下得出结论。;)@Mark我正在使用MongoDB作为数据库,我需要对数据进行排序。它必须是数字。例如,我不能将其MD5,并将其用作字符串。那是我的尝试。你会怎么做?