[英]What’s wrong in my code with for loop and array_rand()?
我需要輸出帶有10個字母數字/下划線字符的隨機字符串,其中第一個字符不能為數字。 我的代碼如下:
$arr = array_merge(range("a", "z"), range("A", "Z"), array("_"));
$name = array_rand($arr);
$arr = array_merge($arr, range(0, 9));
for($i = 1; $i < 10; $i++)
{
$name .= array_rand($arr);
}
echo $name;
但是非常奇怪的是,輸出總是像3329323960047113937
或933255318725381013
或48212116303047152448
。 為什么它超過十個字符,為什么它以數字開頭(盡管當我啟動變量$name
, $arr
中沒有數字)? 我應該使用foreach
代替for
循環嗎? 還是應該使用array_rand()
以外的其他功能? 我只是PHP的初學者,所以為這個愚蠢的問題感到抱歉。 在此先感謝大家。
array_rand返回隨機數組鍵,而不是隨機數組項。 更多信息可以在這里找到: http : //www.php.net/manual/en/function.array-rand.php
我已更正您的代碼:
$arr = array_merge(range("a", "z"), range("A", "Z"), array("_"));
$name = $arr[array_rand($arr)];
$arr = array_merge($arr, range(0, 9));
for($i = 1; $i < 10; $i++)
{
$name .= $arr[array_rand($arr)];
}
echo $name;
輸出示例:
NQvCKSkyym
這樣做吧array_rand()
僅從數組中返回隨機密鑰。 您需要將其置於數組內以獲取隨機元素。
<?php
$arr = array_merge(range("a", "z"), range("A", "Z"), array("_"));
$arr = array_merge($arr, range(0, 9));
for($i = 1; $i < 10; $i++)
{
//$name .= array_rand($arr);
$key = array_rand($arr);
$name .=$arr[$key];
}
echo $name;
輸出:
5Ts9hz7NZ5
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.