2011-09-25 105 views
1

我试图将随机数附加到不同数量的字符。谁能告诉我为什么这不起作用?PHP strlen - 基于字符串长度追加数字

$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; 

回答

4

变化:

if(strlen($userName == 3)) 

要:

if(strlen($userName) == 3) 

而且重复其他2公司的更正nditions。

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

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

尴尬 - 没有看到。 =) – Lars

+0

+1。感谢第二组眼睛 – user547794

+0

有时候,这样的语法错误几乎不可能看到。我曾经花了整整一个下午的时间来调试我的代码,然后才终于意识到我的'if'后面有一个分号。 – Ozzah

0

不知道什么没有奏效:尝试将数显式转换为字符串:

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

000仍然0。相反,使用sprintf()来明确指定需要多少个零。

$missingLen = 6 - strlen($username); 

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