【问题标题】:PHP strlen - appending numbers based on string lengthPHP strlen - 根据字符串长度附加数字
【发布时间】:2011-09-25 23:35:24
【问题描述】:

我正在尝试将随机数附加到不同数量的字符。谁能告诉我为什么这不起作用?

$userName = $_SESSION['username'];
if(strlen($userName == 3)){
    $userName = $userName . rand(000,999);
}
else if (strlen($userName == 4)){
    $userName = $userName . rand(00,99);
}
else if (strlen($userName == 5)){
    $userName = $userName . rand(0,9);
}
echo "<br>" . $userName;

【问题讨论】:

    标签: php


    【解决方案1】:

    变化:

    if(strlen($userName == 3))
    

    收件人:

    if(strlen($userName) == 3)
    

    然后对其他 2 个条件重复该更正。

    这将解决您的语法错误,但我会以不同的方式解决这个问题:

    while (strlen($userName) < 6)
    {
      $userName .= rand(0,9);
    }
    

    【讨论】:

    • 尴尬 - 没看到。 =)
    • 有时几乎看不到像这样的小语法错误。我曾经花了一整个下午调试我的代码,直到我终于意识到我的 if 后面有一个分号。
    • @user547794 查看我的编辑。我为你提出一个更好的方法:)
    【解决方案2】:

    000 仍然是 0。相反,请使用sprintf() 明确指定您想要多少个零。

    $missingLen = 6 - strlen($username);
    
    if($missingLen > 0) {
      $username = sprintf('%s%0'.$missingLen.'d', $username, rand(0, pow(10, $missingLen) - 1));
    }
    

    【讨论】:

      【解决方案3】:

      不知道什么不起作用:尝试将数字显式转换为字符串:

      $userName .= (string)rand(0, 999);
      

      【讨论】:

        猜你喜欢
        • 2011-05-08
        • 2016-07-08
        • 1970-01-01
        • 1970-01-01
        • 2012-12-25
        • 2013-11-25
        • 2014-07-22
        • 2012-01-19
        相关资源
        最近更新 更多