Php var_dump()以某种方式返回NULL

Php var_dump()以某种方式返回NULL,php,null,var-dump,Php,Null,Var Dump,我制作了一个函数来验证到目前为止的电子邮件地址,并检查它们是否匹配 但它似乎不起作用,因为当我var\u dump()时 我得到了null值,例如:null字符串(13)123@gmail.com。你能给我一些建议来解决这个问题吗?我完全卡住了 function email_validate_n_match($value) { if( $value == '') return; if( preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*

我制作了一个函数来验证到目前为止的电子邮件地址,并检查它们是否匹配

但它似乎不起作用,因为当我
var\u dump()

我得到了
null
值,例如:
null字符串(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";
}
在这里你可以找到更多


您考虑过用验证电子邮件吗?@piergialj:谢谢。要解决这个问题,我应该使用全局变量还是其他方法?我是新来使用php的。我不知道为什么要从$count变量开始。你需要它吗?你想用$count做什么?我想计算函数在这里被调用的次数。我只是想做一些函数,可以从表单中获取两个电子邮件地址,并检查它们的值是否为电子邮件地址加上它们是否同时匹配。