0

我有个问题。我制作了一个表格,登录用户可以注册成为摄影师。这一切都很好。在该页面上,我通过查看摄影师对象是否为空来检查用户是否已经是摄影师。

像这样:

if(!empty($this->user->oPhotographer)){         
            $this->doRedirect('alreadyapplied');
}

现在,当我var_dump对其进行操作时,!empty($this->user->oPhotographer) 它会返回bool(false)。它不应该返回这个,它应该返回 true,因为我正在与一个拥有已填充摄影师对象的用户进行测试。

现在奇怪的是:

echo '<pre>'.var_dump(!empty($this->user->oPhotographer)).'</pre>';
        if(!empty($this->user->oPhotographer)){         
            $this->doRedirect('alreadyapplied');
        }

        echo '<pre>';
        var_dump(!empty($this->user->oPhotographer));
        print_r($this->user->oPhotographer);
        echo '</pre>';

当对象不为空时,这段代码应该重定向到正确的页面。var_dump 仍然给出错误,但它不会重定向。这是代码输出:

bool(false)
bool(false)
photographer Object
(
    [table] => photographer
    [data] => 
    [className] => 
    [arFields] => Array
        (
            [id] => id
            [country] => country
            [dateofbirth] => dateofbirth
            [street] => street
            [city] => city
            [about] => about
            [dateapplied] => dateapplied
            [user_id] => user_id
            [phone] => phone
            [zip] => zip
        )

    [id] => 1
    [country] => ...
    [dateofbirth] => ...
    [street] => ...
    [city] => ...
    [about] => 
    [dateapplied] => 2013-04-28 19:41:08
    [user_id] => 15
    [phone] => ...
    [zip] => ...
)

当摄影师实际上不为空时,它如何返回false?

谢谢您的帮助!!

4

1 回答 1

1

您应该使用“isset”,而不是“empty”。原因很清楚。更多信息:http: //php.net/manual/en/function.isset.php

于 2013-04-28T19:00:24.140 回答