【问题标题】:For loop doesn't regen random string, stays the sameFor 循环不会重新生成随机字符串,保持不变
【发布时间】:2016-12-27 20:48:34
【问题描述】:

所以我试图让一个随机字符串生成器与 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/>';
                }
            }
    }
}

【问题讨论】:

  • rnumstrralphstr 在做什么?没有完整的例子就无法重现问题。
  • rnumstr 生成随机数字符串,ralphstr 生成随机字母字符串

标签: php for-loop random


【解决方案1】:

如果您想在每次循环的迭代中生成新的 $alg,则必须在每次迭代时调用您的开关代码。重构你的代码:

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/>';
                }
            }
    }
}

【讨论】:

  • 为什么要退货却不破案?这让我很困惑。
  • 如果返回退出函数,则不需要中断。你真的有“15 年以上的编码经验”吗?
猜你喜欢
  • 1970-01-01
  • 2017-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-07
  • 2012-07-24
  • 2013-03-05
相关资源
最近更新 更多