var_dump()以某种方式返回NULL


var_dump() returns NULL somehow

我编写了一个函数来验证电子邮件地址,以验证并检查它们是否匹配。

但它似乎不起作用,因为当我var_dump()

我得到的null值如:NULL string(13) 123@gmail.com。你能给我一些建议来解决这个问题吗?我完全卡住了。

function email_validate_n_match($value)
{
    if( $value == '') return;
    if( preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9'._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9'._-]+)+$/", $value) ) {
        static $count = 0;
        if($count == 0) {
            $value1 = $value;
        } else if($count == 1) {
            $value2 = $value;
        }
        var_dump($value2);
        // if ($value1 == $value2) {
            //  return;
        // }else{
            //  $this->clear = false;
            //  return $this->tag_st . 'Doesn't match.' . $this->tag_ed;
        // }
        $count++;
        return;
    } else {
        $this->clear = false;
        return $this->tag_st . 'Put the correct email address.' . $this->tag_ed;
    }
}
编辑:

谢谢你的回答。

当我把这个

static $count = 0;
if($count == 0) {
    $value1 = $value;
    echo '0';
} else if($count == 1) {
    $value2 = $value;
    echo '1';
}

输出01。另一方面,

如果我删除static,我得到00

所以我认为这个$count是工作的,但我仍然很困惑为什么我得到了NULL的结果。

您设置$count = 0,然后设置$value1 = $value,但从不设置$value2为任何值,因为$count不等于1,因此$value2为null,这就是为什么var_dump给您null。然后使用$count++将count增加为1,但下次运行时,count将被设置回0。

为什么要花时间来验证电子邮件,而PHP有一个函数来为您做这件事?例如:

if(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
 echo "valid";
}else{
 echo "not Valid";
}

在这里你可以找到更多。

PHP过滤器