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

时间:2010-08-18 16:02:05

标签: php boolean boolean-logic

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

$foo = "";
if($var==TRUE){
    $foo = "bar";
}

if($var==TRUE){
    $foo = "bar";
}else{
    $foo = "";
}

$foo = ($var==TRUE) ? "bar": "";

6 个答案:

答案 0 :(得分:8)

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

其次,您不需要$var == true内的冗余if比较。它与if ($var) {完全相同(对于双==比较。相同的比较===需要明确)。

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

$foo = '';
if ($var) {
    $foo = 'one status';
} else {
    $foo = 'another status';
}

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

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

$foo = $var ? 'bar' : '';

答案 1 :(得分:5)

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

此外,如果$ var只是一个布尔值,那么第三个就不必如此冗长:

$foo = $var ? "bar" : "";

答案 2 :(得分:1)

我喜欢第一个:

$foo = "";
if($var==TRUE){
    $foo = "bar";
}

因为它清晰,简洁,易于阅读。

答案 3 :(得分:1)

我更喜欢第一个(除了布尔值的冗余测试),因为它在语言中一致地工作,特别是那些需要在设置之前声明变量(并且可能代表它)的那些。
爪哇:

String foo = "";
if (var) {
  foo = "Something";
}

JavaScript或JavaFX:

var foo = "";
if (var) {
  foo = "Something";
}

等。
也可以使用第三种形式,但如果条件(或赋值)很复杂,则可读性稍差。

答案 4 :(得分:0)

非常重要。我喜欢第一个有很多elseif的东西,所以你知道变量总是被初始化。但这只是一个偏好问题。

与引号一样,我喜欢在php中使用单个引号。没有充分的理由:))

答案 5 :(得分:0)

正确的答案是,“它取决于”。在这种情况下,

if ($var==TRUE) $foo = "bar";
else $foo = "";

很清楚。但是你的背景是什么?

一般来说,第三种选择,第三种选择,应该非常谨慎使用,因为它很容易变得难以阅读。

但是考虑一下你希望你的代码意味着什么,而不是它的作用。你想将你的$ foo设置为“正常”值,然后覆盖它吗?或者你想设置一些取决于$ var是什么的东西?

我发现有些东西可以改变,这不是你要求的,但这是类似的,是这样的,来自

function func() {
    ...
    if ($condition) {
        do plenty
        of things
    }
    else {
        do plenty
        of things
    }
}

那,我通常喜欢改为:

function func() {
    ...
    if ($condition) {
        do plenty
        of things
        return;
    }
    do plenty
    of things
}

通常有意义

问问自己:“如果对我的代码一无所知的人读了它,对他有意义吗?还是她?”