2012-09-19 113 views
0

我根據時間,計數器和隨機預謀值從1到10,我產生它的方式來生成唯一ID:PHP - 字符串爲int

$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 

正如你可以看到上面的時間是一樣的。他們全部。我在這裏錯過了什麼?

+0

32位整數限制 –

+0

變量i是什麼? – Srijan

+1

http://en.wikipedia.org/wiki/2147483647#2147483647_in_computing – sachleen

回答

1

2147483647是您的操作系統/ php二進制文件可以使用的最大(帶符號)整數。

2147483647 * 2 = 2^32這意味着您的操作系統/ php二進制文件正在工作32位。

在上面的解釋中,我將乘以2,因爲php使用的整數是帶符號的,這意味着它們跨整數的負軸和正軸。

使用浮點值(如microtime(TRUE)返回的浮點值)可讓您使用更大的數字。

0

使用microtime可以獲取函數發生的確切時間。

您還應該使用uniqid來獲得適當的隨機回報。