簡體   English   中英

for循環和array_rand()在我的代碼中出了什么問題?

[英]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;

但是非常奇怪的是,輸出總是像332932396004711393793325531872538101348212116303047152448 為什么它超過十個字符,為什么它以數字開頭(盡管當我啟動變量$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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM