我有一个生成随机字符串的函数,我希望它生成多于1​​行的随机字符串

时间:2019-05-24 15:35:04

标签: php random

我有一个生成随机字符串的函数,它会生成1个以上的随机字符串,但是如何将它们分开

    Function generatorstring($count) {

    $karakter = '0123456789abcdefghijklmnopqrstuvwxyz';
    $length = 7;
    $randomString = '';

    for ($i=0; $i <$count ; $i++) { 

        for ($ia = 0; $ia < $length; $ia++) {
            $randomString .= $karakter[rand(0, strlen($karakter) - 1)];
        }

    }

    return $randomString ;
}
echo generatorstring(3);

我期望这样的结果

'As6s8Xs',
'zE71jnM', 
'ak9a71b', 

但是,它只能产生1行随机字符串。

2 个答案:

答案 0 :(得分:1)

您应分离代码以创建随机字符串,然后再调用3次。

将代码分隔为执行简单操作的小函数是良好实践编程的基础。

考虑:

function generatorstring($length = 7){
    $karakter = '0123456789abcdefghijklmnopqrstuvwxyz';
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $karakter[rand(0, strlen($karakter) - 1)];
    }
    return $randomString;
}

现在将其称为:

for ($i = 0; $i < 3; $i++) 
    $res[] = generatorstring();

或创建一个创建随机字符串数组的函数,如下所示:

function createRandomStringArray($count) {
    for ($i = 0; $i < $count; $i++) 
        $res[] = generatorstring();
    return $res;
}

然后您可以使用$res或其他循环打印print_r数组

答案 1 :(得分:0)

好吧,马上要解决的最大问题是,在for循环中使用相同变量的for循环。

第一个for循环将$ i建立为0,递增1。第二个for循环(内部)将$ i覆盖为0,并递增直到$ i等于$ length。 $ i现在为7。外部for循环看到$ i为7,大于$ count(3),因此外部for循环中断。

for($i=0; $i < $count; $i++) {
   for($ia=0; $ia < $length; $ia++){
      //do something
   }
}

还请注意,这很丑陋,而且最好像@dWinder所述,将内部for循环放入其自己的函数中。