清洁并优化if

时间:2015-02-12 17:13:05

标签: php if-statement

我在我的页面中有这个代码,但我想要优化它,因为它太长了。你能告诉我一种不同的写作方式吗?

public function __construct($css, $info, $other){
    if ($info != FALSE) {
          echo "Info is True";
    }
    if ($css != FALSE) {
          echo "Css is true";
    }
    if ($other != FALSE) {
          echo "other is true";
    }
}

这只是一个例子。代码有太多if条件,因为我必须检查的字段不同。有没有不同的方法呢?

我尝试过其他方法,但没有成功。 编辑:有时变量是空的!

3 个答案:

答案 0 :(得分:0)

您的代码足够清晰,但您可以尝试不同的表示形式,如:

public function __construct($css, $info, $other){
    echo $info != FALSE ? 'Info is True' : 'Info is False';
    echo $css != FALSE ? 'CSS is True' : 'CSS is False';
    echo $other != FALSE ? 'Other is True' : 'Other is False';
}

答案 1 :(得分:0)

如前所述,您现有的代码足够清晰(也可能是您应该使用的代码)但是为了它的乐趣,您总是可以通过使用变量变量来实现它: - )

class Foo
{
    public function __construct($css, $info, $other)
    {
        foreach (array('css', 'info', 'other') as $p)
            if (!!$$p) echo "$p is true" . PHP_EOL;
    }
}

$bar = new Foo(1, '', true);

输出:

css is true
other is true

答案 2 :(得分:-1)

为避免大量ifs,您可以使用单独的函数echo所需的文字,例如:

public function __construct($css = false, $info = false, $other = false) {
    $this->echoIfTrue($css, "Css is true");
    $this->echoIfTrue($info, "Info is true");
    $this->echoIfTrue($other, "Other is true");
}

private function echoIfTrue($someVar, $textToEcho) {
    if ($someVar) {
        echo $textToEcho;
    }
}