用于不同结果Everyloop的PHP Str_repeat

时间:2017-05-14 02:06:07

标签: php string hash

使用PHP生成test-16DIGIT哈希。但是,当我尝试将它打印到屏幕上时,回声"它产生了相同的5个结果。

我想为每个循环生成5个不同的结果。

<?php
function generateRandomString($length = 16) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, $charactersLength - 1)];
    }
    return $randomString;
}

//16 hanelik kodu buyutuyorum
$uret = generateRandomString();
$buyut = strtoupper($uret);
echo str_repeat("1:test-" . "$buyut" . "</br>",5);
?>

我已经尝试了#34;数组方法&#34;但它不起作用。谢谢..

在将str_repeat更改为for循环之后,您可以看到循环对于echo行也不起作用;

<?php

function generateRandomString($length = 16) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, $charactersLength - 1)];
    }
    return $randomString;
}

//16 hanelik kodu buyutuyorum
$uret = generateRandomString();
$buyut = strtoupper($uret);
for ($i = 1; ; $i++) {
    if ($i > 10) {
        break;
    }
echo "1:test-" . "$buyut" . "</br>";
}
?>

1 个答案:

答案 0 :(得分:0)

我解决了我的问题;

<?php
function rand_str($len, $norepeat = true)
{
    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    $max = strlen($chars) - 1;

    if ($norepeat && $len > $max + 1) {
        throw new Exception("Non repetitive random string can't be longer than charset");
    }

    $rand_chars = array();

    while ($len) {
        $picked = $chars[mt_rand(0, $max)];

        if ($norepeat) {
            if (!array_key_exists($picked, $rand_chars)) {
                $rand_chars[$picked] = true;
                $len--;
            }
        }
        else {
            $rand_chars[] = $picked;
            $len--;
        }
    }

    return implode('', $norepeat ? array_keys($rand_chars) : $rand_chars);   
}
$i = 10;
foreach(range(1,5) as $i) {
$uretec = rand_str(16);
$buyut = strtoupper($uretec);
echo "1:test-" . "$buyut" . "</br>";
}
?>