2011-09-25 5 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 명의 공동체에 대한 그 수정을 반복한다. 기타.

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

embarassing - 그것을 보지 못했습니다. =) – Lars

+0

+1. 눈의 두 번째 세트를 가져 주셔서 감사합니다. – user547794

+0

때로는 구문 오류가 거의 나타나지 않는 경우가 있습니다. 한 번 내내 오후 내 코드를 디버깅하기 전에 나는'if' 직후에 세미콜론을 가지고 있음을 깨달았습니다. – Ozzah

0

무엇을하지 않았다 일 :

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

000 여전히 0입니다 : 당신의 구문 오류를 해결할 것입니다,하지만 난이 문제를 다른 방식으로 해결할

. 대신, 원하는 수의 0을 지정하려면 설명에 sprintf()을 사용하십시오.

$missingLen = 6 - strlen($username); 

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