【问题标题】:Function returning only FALSE仅返回 FALSE 的函数
【发布时间】:2016-04-03 16:44:49
【问题描述】:

我有一个php函数。

                if ( $this->input->post('email') == $this->_email($this->input->post('email')) )
            {
                $this->_data['error'] = 'Email exist!';
                return $this->load->view('login/template_view', $this->_data);
            }

我的函数只返回 FALSE,即使相等是真的。我使用调试来查看我的函数是否可以返回 TRUE。

bool(false) string(14) "alex@yahoo.com" object(stdClass)#25 (1) { ["email"]=> string(14) "alex@yahoo.com" }

我有 2 个字符串,第一个返回 alex@yahoo.com,第二个字符串返回 alex@yahoo.com...但如果条件仍然返回 FALSE。

我的函数出了什么问题?

调试:

                var_dump($this->input->post('email'));
                var_dump($this->_email($this->input->post('email')));
                die();

【问题讨论】:

  • $this->email() 返回一个stdClass,而不是string...这根本不会相等。您的对象包含一个成员 email,这是您应该与第一个字符串进行比较的内容。
  • 哦,你说得对。但是我如何从对象中提取电子邮件 [字符串]?我是codeigniter的初学者。如果你能解释一下,我真的很感激
  • 另外,只有$this->load->view('login/template_view', $this->_data); 没有return
  • 这是什么$this->_email($this->input->post('email'))
  • _email 是一个函数,但现在我的代码可以工作了。谢谢大家的帮助

标签: php sql codeigniter codeigniter-2


【解决方案1】:

您正在将字符串与对象进行比较。为了使您的比较工作,您需要将字符串与对象的email 属性进行比较。您可以使用-> 或使用方法来访问对象属性。

您可以阅读有关 PHP 对象 herehere 的更多信息。

为了让您的代码正常工作,请替换:

if ( $this->input->post('email') == $this->_email($this->input->post('email')) )

if ( $this->input->post('email') == $this->_email($this->input->post('email'))->email )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-26
    • 2017-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多