2012-01-26 2 views
1

양식 유효성 검사를하고 있지만 오류가있을 때 배열의 내용을 인쇄하려고하면 아무 것도 출력되지 않습니다.PHP 배열이 제대로 출력되지 않습니다.

$errors = array(); 

if (strlen($password) >= 6) { 
    array_push($errors, "Your password is not long enough! Must be over 6 characters!"); 
} 

if(count($errors) !== 0) { 
... 
} else { 
    echo "There is errors<br/>"; 
    foreach($errors as $er){ 
     echo $er . "<br/>"; 
    } 
} 

"오류가 있습니다"라는 메시지가 표시되면 if else가 작동하는 것입니다.

답변

2

난 그냥 if의 인수를 해결하는 데이 방법으로

if(count($errors) === 0) { 
    // everything is okay 
} else { 
    echo "There are errors<br/>"; 
    foreach($errors as $er){ 
     echo $er . "<br/>"; 
    } 
} 

, 당신의 오류가 를 셀 때 0의 if의 내용이 실행됩니다. 0이 아니면 else의 내용이 실행되고 오류가 인쇄됩니다. 그것은 당신이 한 것과 정반대입니다. 는 (나는 또한 문장 수정 : 그것은 '오류가'것,하지 '오류가'P) :

if (strlen($password) <= 6) { 
, 그것은 반대해야

또한, 다른 if뿐만 아니라 잘못

암호가 보다 작고이 6 문자가 아닌지 확인해야하기 때문에

+1

또한 빈 배열은 'FALSE'로 평가되므로'count ($ errors)'도 필요하지 않습니다. 'if ($ errors) {echo '오류가 있습니다'; }' – rdlowrey

1

그것은해야하지 :

if (strlen($password) < 6) { 
    array_push($errors, ...); 

?

현재, magic numbers 대신 정수를 사용해야합니다.

define('MIN_PASSWORD_LENGTH', 6); 

// ... 

if (strlen($password) < MIN_PASSWORD_LENGTH) { 
    array_push($errors, "Your password is not long enough!" 
     . " Must be over ".MIN_PASSWORD_LENGTH." characters!"); 
} 

이렇게하면 필요한 최소 길이가 변경되면 한 번만 변경하면됩니다.

+0

오, 그래 ... 고마워! – jamcoupe

0

if 문장이 엉망입니다. 오류를 확인한 다음 아무 것도하지 않으면 오류가 표시되는 곳이 else입니다. 이 시도 :

if(count($errors) >0) { //there are errors 
    echo "There is errors<br/>"; 
    foreach($errors as $er){ 
     echo $er . "<br/>"; 
    } 
}else{ 
    //there are no errors 
} 

는 또한, 비밀번호의 길이가 너무 짧은 경우에 <=6하지 않는 것보다 크거나 같아야합니다.

관련 문제