0

時間、カウンター、および 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

ご覧のとおり、時間は同じです。それらのすべて。ここで何が欠けていますか?

4

2 に答える 2

1

2147483647 は、オペレーティング システム/php バイナリで使用できる最大の (符号付き) 整数です。

2147483647*2 = 2^32 は、オペレーティング システム/php バイナリが 32 ビットで動作していることを意味します。

上記の説明では、php で使用される整数は符号付きで、整数の負の軸と正の軸の両方にまたがっているため、2 を掛けています。

によって返されるような float 値を使用するmicrotime(TRUE)と、より大きな数値を扱うことができます。

于 2012-09-19T19:51:03.813 に答える
0

microtimeを使用して、関数が発生した正確な時刻を取得します。

また、 uniqidを使用して、適切なランダム リターンを取得する必要があります。

于 2012-09-19T19:47:57.667 に答える