如何用PHP编写布尔表达式?

Sta*_*0rz 7 php boolean-logic boolean

如何在PHP中编写以下布尔表达式:

$foo = "";
if($var==TRUE){
    $foo = "bar";
}
Run Code Online (Sandbox Code Playgroud)

要么

if($var==TRUE){
    $foo = "bar";
}else{
    $foo = "";
}
Run Code Online (Sandbox Code Playgroud)

要么

$foo = ($var==TRUE) ? "bar": "";
Run Code Online (Sandbox Code Playgroud)

irc*_*ell 8

首先,true它不是一个常数,它是一个标记,所以请不要大写它(我知道有些标准可以做到这一点,但我认为它混淆了意思)...

其次,你不需要在$var == true里面进行冗余比较if.它完全相同if ($var) {(对于双重==比较.相同的比较===需要明确).

第三,我更喜欢预先初始化.所以:

$foo = '';
if ($var) {
    $foo = 'one status';
} else {
    $foo = 'another status';
}
Run Code Online (Sandbox Code Playgroud)

如果您不需要else分支,只需将其删除即可.我更喜欢预初始化,因为它会强制您初始化变量,并且它会阻止您忘记在其中一个分支中初始化它的情况.此外,当您稍后返回阅读该功能时,它会为您提供类型提示...

对于像这样的简单分支,使用三元语法很好.如果有更复杂的逻辑,我会离开:

$foo = $var ? 'bar' : '';
Run Code Online (Sandbox Code Playgroud)


jtb*_*des 5

所有这些工作.这是偏好.我会考虑像第一个例子中那样初始化变量.但对于这个简单的事情,第三种选择在我的书中很好.

此外,如果$ var只是一个布尔值,则第3个不必如此冗长:

$foo = $var ? "bar" : "";
Run Code Online (Sandbox Code Playgroud)

  • 除非他们专门寻找真实,否则你会想要使用$ foo =($ var === TRUE)?"bar":""; (3认同)