PHP数组输出不正确

时间:2012-01-26 20:54:56

标签: php arrays foreach

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

$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正在运作。

3 个答案:

答案 0 :(得分: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也是错误的,它应该是相反的:

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

因为您需要检查密码少于的时间是否超过6个字符。

答案 1 :(得分: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!");
}

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

答案 2 :(得分: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