返回有效数据。
if($this->empty_check()){
$this->name(); // Valid name
$this->email(); //Valid email
}
我有两种方法,它们都运行得很完美,但是当我将它们放入if语句中时,检查它们是否都在第一次运行时返回true。我尝试删除第一种方法($ this-> name()),显然第二种方法开始工作..但不是同时进行。
这就是导致上述问题的原因。
if($this->name() and $this->email()){
echo "valid data!";
}
IMO它应该回显有效名称,有效电子邮件和有效数据,但只回显有效名称。
答案 0 :(得分:1)
您正在遇到短路。
条件设计用于检查值,而不是执行操作,因此它们已经过优化,因此if (false && x)
表示x
根本不会被评估;它不能改变总体条件的含义,因为左侧已经有false
。
您对name()
的来电必定失败,因此拨打email()
的电话甚至无法发生。
我建议不将这些调用绑定到条件中。
$success = $this->name();
$success &= $this->email();
if ($success) {
// ...
}
答案 1 :(得分:0)
因此,在您的情况下,$this->name()
看起来像输出有效的名称'但是return
s false / 0或类似。
-
副作用
有时候这些确实很糟糕,所以请避免使用它们。这个例子现在就是你的:
if (++x > 2 or ++y >5) ...
看看那个并考虑当x已经是2时会发生什么。