私はこれを試していますが、大きな価値を保存することができません
$var = Rand(100000000000000,999999999999999);
echo $var; // prints a 9 digit value(largest possible)
必要な値を取得するにはどうすればよいですか?
PHPのintは通常32ビットです。他のパッケージは、より精度の高いintを提供します: http://php.net/manual/en/language.types.integer.php
manual から:
整数のサイズはプラットフォームに依存しますが、最大値は約20億が通常の値です(32ビットの符号付き)。通常、64ビットプラットフォームの最大値は約9E18です。 PHPは、符号なし整数をサポートしていません。整数サイズは定数PHP_INT_SIZEを使用して決定でき、最大値は定数PHP_INT_MAXを使用してPHP 4.4.0およびPHP 5.0.5以降で決定できます。
...
PHPが整数型の範囲を超える数を検出した場合、代わりに浮動小数点数として解釈されます。また、整数型の境界を超える数になる結果の演算は、代わりに浮動小数点数を返します。
BC Math と [〜#〜] gmp [〜#〜] は、この制限を操作する(唯一の?)方法です。
非常に大きな数を処理する必要がある場合は、BC Mathで成功しています。ここにあなたが知る必要があるすべてへのリンクがあります:
数値を生成してネイティブタイプとして操作する場合は、ほとんどのPHPインストール済み環境ではできません(32ビットまたは64ビットのint
sがあり、他には何もありません)。他の答えはすでに述べたとおりですが、数値を生成するだけでそれを渡したい場合、可能なトリックは文字列を連結することです:
_$var = Rand(0,PHP_INT_MAX).str_pad(Rand(0, 999999999), 9, 0, STR_PAD_LEFT);
echo $var;
_
PHPが32ビット整数を使用するプラットフォームでは、これにより、32ビットより大きい(小数点以下10桁を超える)ランダムに近い整数(文字列として)を取得できます)。もちろん、この構造にはバイアスがあります。つまり、すべての数値を同じ確率でカバーすることはできません。Rand()
呼び出しの制限は通常の10進数の規則に従うため、数値の上限を調整するのは簡単ですあなたが欲しい。
この値を保存/送信/表示するだけの場合、文字列は問題ありません。テストの平等とより大きい/より小さいも機能します。それを使って計算をしないでください。