代码之家  ›  专栏  ›  技术社区  ›  Stann0rz

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

  •  7
  • Stann0rz  · 技术社区  · 16 年前

    以下布尔表达式应该如何用PHP编写:

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

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

    $foo = ($var==TRUE) ? "bar": "";
    
    6 回复  |  直到 16 年前
        1
  •  8
  •   ircmaxell    16 年前

    首先, true 不是常量,它是标记,所以请不要大写(我知道有些标准会这样做,但我认为它混淆了含义)。

    第二,你不需要多余的 $var == true 内部比较 if . 它和 if ($var) { (双人) == 比较。相同的比较 === 需要明确)。

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

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

    如果你不需要另一个分支,就把它取下来。我更喜欢预初始化,因为它强制您初始化变量,并且它可以防止忘记在其中一个分支中初始化变量的情况。另外,当您稍后返回阅读函数时,它会给您一个类型提示…

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

    $foo = $var ? 'bar' : '';
    
        2
  •  5
  •   jtbandes    16 年前

    所有这些工作。这是偏好。我将考虑首先初始化变量,就像在第一个示例中那样。但是对于这样简单的事情,第三个选择在我的书中是可以的。

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

    $foo = $var ? "bar" : "";
    
        3
  •  1
  •   Justin Ethier    16 年前

    我喜欢第一个:

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

    因为它清晰、简洁、易读。

        4
  •  1
  •   PhiLho    16 年前

    我更喜欢第一个(除了布尔值的冗余测试),因为它在不同的语言中都能始终如一地工作,特别是那些需要在设置变量之前声明变量(并可能对其进行类型化)的语言。
    爪哇:

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

    javascript或javafx:

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

    等。
    人们也可以使用第三种形式,但是如果条件(或赋值)很复杂,那么它的可读性就要差一点。

        5
  •  0
  •   Michael Clerx    16 年前

    没什么关系。我喜欢第一个,当有很多elseif的时候,这样你就知道变量总是初始化的。但这实际上只是一个偏好问题。

    像引号一样,我喜欢在PHP中使用单引号。没有好的理由:)

        6
  •  0
  •   eje211    16 年前

    正确的答案是,“视情况而定”。在这种情况下,

    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
    }
    

    一般来说 有道理 .

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