PHP - 字符串到int

时间:2012-09-19 19:46:53

标签: 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 convert it to int 
$time = (int)$time;
2147483647 //This is time converted in first iteration
2147483647 //This is time converted in second iteration

如您所见,上述时间相同。他们都是。我在这里失踪了什么?

2 个答案:

答案 0 :(得分:1)

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

2147483647 * 2 = 2 ^ 32这意味着您的操作系统/ php二进制文件正在运行32位。

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

使用microtime(TRUE)返回的浮点值可以让你使用更大的数字。

答案 1 :(得分:0)

使用microtime获取功能发生的确切时间。

您还应该使用uniqid来获得适当的随机回报。