PHP数组输出不正确


PHP array not outputting properly

我正在尝试进行表单验证,但当我尝试在出现错误时打印出数组的内容时,它不会输出任何内容。

$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是有效的。

我只需要更正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也是错误的,它应该是相反的:

if (strlen($password) <= 6) {

因为您需要检查密码何时小于6个字符。

不应该是:吗

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

顺便说一句,你应该至少使用常数而不是幻数,例如

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!");
}

这样,如果您所需的最小长度发生变化,您只需更改一次即可。

您的if语句搞砸了。您正在检查错误,然后什么也不做,然后在其他地方显示错误。试试这个:

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,如果太短,则不应大于或等于。