2011-09-25 102 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)); 
}