对于循环不重新生成随机字符串,保持不变

时间:2016-12-27 20:48:35

标签: php for-loop random

所以我试图让一个随机字符串生成器与for循环一起工作。我已经让它循环它应该的次数,但它拒绝为每个循环生成一个新的字符串。有人可以看看我的代码并告诉我哪里出错了吗?也没有办法使用unqid所以请不要提及它。

if($_SERVER['REQUEST_METHOD'] == "POST")
{
    $key = $_POST['keysd'];
    if(isset($key) && is_string($key))
    {
        switch($key)
        {       
            case "ksc";
            $algor = "78.0000.".rnumstr(7);
            break;

            case "kpl";
            $algor = "76.0000.".rnumstr(7);
            break;

            case "kfi";
            $algor = "D01EB0A01472".rnumstr(1).strtoupper(ralphstr(3));
            break;
        }

            $sum = $_POST['sum'];
            $alg = $algor;
            if(isset($sum))
            {
                for ($i = 0; $i < $sum; $i++)
                {
                    echo $alg.'<br/>';
                }
            }
    }
}

1 个答案:

答案 0 :(得分:1)

如果要为每个循环的迭代生成新的$ alg,则必须在每次迭代时调用switch的代码。重构你的代码:

function getRandomValue($key)
{
    switch($key)
    {       
        case "ksc":
            return "78.0000.".rnumstr(7);

        case "kpl":
            return "76.0000.".rnumstr(7);

        case "kfi":
            return "D01EB0A01472".rnumstr(1).strtoupper(ralphstr(3));
    }
}

if($_SERVER['REQUEST_METHOD'] == "POST")
{
    $key = $_POST['keysd'];
    if(isset($key) && is_string($key))
    {
            $sum = $_POST['sum'];
            if(isset($sum))
            {
                for ($i = 0; $i < $sum; $i++)
                {
                    $alg = getRandomValue($key);
                    echo $alg.'<br/>';
                }
            }
    }
}