PHP でランダムな文字列を作成しようとしていますが、次のようにしてもまったく出力されません。
<?php
function RandomString()
{
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randstring = '';
for ($i = 0; $i < 10; $i++) {
$randstring = $characters[rand(0, strlen($characters))];
}
return $randstring;
}
RandomString();
echo $randstring;
何が間違っているのでしょうか?
ベストアンサー1
この質問に具体的に答えると、2 つの問題があります。
$randstring
エコーするとスコープ内に含まれなくなります。- ループ内で文字が連結されません。
修正を加えたコード スニペットを次に示します。
function generateRandomString($length = 10) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[random_int(0, $charactersLength - 1)];
}
return $randomString;
}
以下の呼び出しでランダムな文字列を出力します。
// Echo the random string.
// Optionally, you can give it a desired string length.
echo generateRandomString();
この回答の以前のバージョン
rand()
では の代わりにが使用されていたためrandom_int()
、予測可能なランダムな文字列が生成されていました。そのため、次のアドバイスに従って、より安全なものに変更されました。この答え。