(if(x == y)return true,else false)和(if(x!= y)返回false,else true)之间有什么区别?

时间:2016-05-04 17:04:30

标签: php logic

if($send != true)
    {
        echo "Error Sending Email: ". $send->message;
        return false;
    }
    else 
    {
        echo "Mail Sent";
        return true;
    }

我现在正在学习PHP,并且很难理解为什么这个代码的设置方式如此。上面的代码与此之间有什么区别:

if($send == true)
    {
        echo "Mail Sent";
        return true;
    }
    else 
    {
        echo "Error Sending Email: ". $send->message;
        return false;
    }

在我看来,他们会做同样的事情,而我无法想出为什么要使用其中一个的原因。这只是偏好,还是我错过了什么?我是初学者,所以任何输入都会非常感激。

2 个答案:

答案 0 :(得分:6)

没有区别,大多数情况下你可以随心所欲。

请注意,您无需将boolean valuestruefalse进行比较,因为他们已经对这种情况感到满意。例如

if ($send) {
    echo "Mail Sent";
    return true;
} else {
    echo "Error Sending Email: ". $send->message;
    return false;
}

您也可以像这样返回$send

if ($send) {
    echo "Mail Sent";
} else {
    echo "Error Sending Email: ". $send->message;
}
return $send;

当您选择使用哪种订单时,我建议您考虑哪一种更容易阅读和理解。

P.S。 PHP中的一个重要主题是Type Juggling PHP自动将不同类型转换为所需的任何类型。只需阅读本文,并在进行不同的条件检查时记住。有时这可能很棘手。

p.p.s。有一本好书我Martin Fowler - Refactoring: Improving the Design of Existing Code它涵盖了这样的问题 - 如何组织代码,什么是进行条件检查的最佳方式等等。嗯,这不是关于这个主题的唯一一本书,但这是第一本一个我想到的。这可能是有争议的,并非所有人都遵循他的建议,但这是你可能想知道的事情:)

答案 1 :(得分:5)

我更喜欢先进行错误验证,这样我就不必将错误验证后的所有内容都包装到自己独立的条件中。

请考虑以下事项:

if(!$send) {
    echo "Error Sending Email: ". $send->message;
    return false;
}
echo "Mail Sent";
return true;

对我而言,这更容易阅读,并且在处理多个验证标准时变得更容易管理。只需在开头抛出所有验证标准,你就是黄金(假设当你有错误时退出该函数)。一旦它通过了每次验证检查,它就会一直突然出现。

然而,主要的消息是,没有“正确”的答案。这完全是一个偏好问题。