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

1 php logic

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

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

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

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

Vic*_*nov 6

没有区别,大多数情况下你可以做任何你喜欢的事情.

请记住,你并不需要比较布尔值truefalse的原因,他们已经好了条件.例如

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

您也可以$send像这样返回值

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

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

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

pps有一本很棒的书我的马丁福勒 - 重构:改进现有代码的设计它涵盖了这样的问题 - 如何组织代码,什么是进行条件检查的最佳方式等等.嗯,这不是唯一的书主题但这是我想到的第一个.这可能是有争议的,并非所有人都遵循他的建议,但这可能是你想知道的:)


Dav*_*yly 5

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

考虑以下:

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

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

然而,主要的好处是没有"正确"的答案.这完全是一个偏好问题.