php函数中的if-else

php函数中的if-else,php,Php,我有一个php类中的方法,它返回布尔响应,我使用的代码是 public function checkIfExist($table ,$key, $value) { $sth = $this->dbh->prepare("SELECT COUNT(*) FROM $table WHERE $key = :value"); $sth->bindParam(':value', $value); $sth->execute(); if($sth-&

我有一个php类中的方法,它返回布尔响应,我使用的代码是

public function checkIfExist($table ,$key, $value)
{
    $sth = $this->dbh->prepare("SELECT COUNT(*) FROM $table WHERE $key = :value");
    $sth->bindParam(':value', $value);
    $sth->execute();
    if($sth->fetchColumn() >= 1)
    {   
        return true;
    }
        return false;
}
上面的方法在不包含else条件的情况下对我有效,从逻辑上讲它应该有效,因为一旦函数得到true as boolean响应,它将退出该方法。但这是正确的方法还是应该包括其他条件?

这是很好的编码

您不需要
其他

这是因为如果if语句中的任何内容为true-->则返回,如果它不是true-->则返回


因此,该函数的实现是正确的

最好像这样返回:

return ($sth->fetchColumn() >= 1);

而不是if和else,这很好,因为正如您所说的,该方法已经返回了。由于您的条件已返回布尔值,您还可以编写

public function checkIfExist($table ,$key, $value)
{
    $sth = $this->dbh->prepare("SELECT COUNT(*) FROM $table WHERE $key = :value");
    $sth->bindParam(':value', $value);
    $sth->execute();
    return $sth->fetchColumn() >= 1;
}

这是一个完美的方式来写这个逻辑。如果您从
If
正文返回,则肯定可以忽略
else

不过,这样做更为简洁:

return $sth->fetchColumn() >= 1;

这实际上是一个偏好的问题


就个人而言,我喜欢每个函数/方法只有一个返回语句。这需要使用一个变量来保存返回值,但希望得到的是更可读的代码。

这是正确的。而且非常熟练。

只需返回比较结果:

public function checkIfExist($table ,$key, $value)
{
    $sth = $this->dbh->prepare("SELECT COUNT(*) FROM $table WHERE $key = :value");
    $sth->bindParam(':value', $value);
    $sth->execute();
    return ($sth->fetchColumn() >= 1);
}

我经常使用这种编码:

function do_something($arg)
{
    if(some_condition_fails($arg))
    {
        return false;
    }

    if(some_other_condition_fails($arg))
    {
        return false;
    }

    //do it
    return $result;
}

实际上,在不需要的代码周围添加额外的块比不需要它更脏(在我看来)

return$sth->fetchColumn()>=1这就是我喜欢em的方式。3人比我强,只需返回比较结果即可。@mhitza和UPVOLTERS:这是一个很大的问号,无论这种书写方式是否更好,它肯定可读性和可维护性都较差。@markus人仍在争论哪些括号样式可读性较低/更高,我不想说:)@mhiza不是关于方括号的,方括号和代码的可维护性无关,不一定更好。只是更紧凑。因为如果他以后想在
return true
之前添加一条指令,他将不得不更改所有指令。它看起来整洁易读,我认为比我使用的更好,谢谢:)@markus:你写这样的if语句吗<代码>如果((a>b)=true){…}
或者类似的情况<代码>如果(a>b){…}当然是第二个。如果是第一个,则为if(true==(a>b)),反之亦然。但我们在谈论别的事情!if语句有一个“if”,它提供了我们正在讨论的符号所缺少的语义信息。