次の関数は、複数回呼び出された場合の出力/衝突の重複を防ぐ最良の方法をランダムな文字列出力にします。複数回呼び出されたときに出力が重複するのを防ぐPHPランダム文字列関数
function random_string($length) {
$key = '';
$keys = array_merge(range('A', 'Z'), range('a', 'z'), array('_'));
for ($i = 0; $i < $length; $i++) {
$key .= $keys[array_rand($keys)];
}
return $key;
}
echo "First : " . random_string(rand(3, 50));
//These have a small percentage of a chance of matching the previous random output lets eliminate all possibility of getting the same output.
echo "Second : " . random_string(rand(3, 50));
echo "Third : " . random_string(rand(3, 50));
echo "Fourth : " . random_string(rand(3, 50));
私はarray_uniqueは私が望むものを達成できるが、それは最善の解決策になるか、より効率的な方法があるでしょうPHPのドキュメントに読みになりました。あなたは名前さえないものを修正しようと、「overengeneering土地」に向かっている
// array to store required strings
$stringsCollection = [];
// 4 is the number of strings that you need
while (sizeof($stringsCollection) != 4) {
// generate new string
$randString = random_string($length);
// if string is not in `stringsCollection` - add it as a key
if (!isset($stringsCollection[$randString])) {
$stringsCollection[$randString] = 1;
}
}
print_r(array_keys($stringsCollection));
'Array_unique'独自の要素を排除するので、4つの文字列の代わりに、3つまたは2つまたは1つを取得します。 –
以前に作成されたすべての文字列をコレクションおよびループに保存します。これは、メソッドがまだ含まれていない文字列を作成するまで続きます。 – Marvin