【问题标题】:var_dump() returns NULL somehowvar_dump() 以某种方式返回 NULL
【发布时间】:2014-09-24 03:37:59
【问题描述】:

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

但它似乎不起作用,因为当我 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。另一方面,

如果我删除静态,我会得到00

所以我认为这个$count 有效,但我仍然很困惑为什么我得到上面的NULL 结果。

【问题讨论】:

  • 您是否考虑过使用filter_var 验证电子邮件?

标签: php null var-dump


【解决方案1】:

您设置了 $count = 0,然后设置了 $value1 = $value,但从不将 $value2 设置为任何值,因为 $count 不等于 1,所以 $value2 为 null,这就是 var_dump 为您提供 null 的原因。然后使用 $count++ 将 count 增加到 1,但下次运行时,count 将设置回 0。

【讨论】:

  • @piergialj:谢谢。要解决这个问题,我应该使用全局变量还是其他任何想法?我是使用 php 的新手。
  • 我不确定你为什么要从 $count 变量开始。你甚至需要它吗?你想用 $count 做什么?
  • 我试图计算函数在这里被调用了多少次。我只是想做一些可以从表单中获取两个电子邮件地址的功能,并检查它们的值是否是电子邮件地址以及它们是否同时匹配。
【解决方案2】:

为什么要花时间验证电子邮件,而 PHP 有一个功能可以为您做到这一点? 例如:

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

在这里您可以找到更多。

PHP Filters

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多