为什么检查$ _GET变量是否为空两次?

bre*_*ine 0 php is-empty

使用PHP一些代码,我遇到了一些代码,基本上检查相同的变量是否为空两次:

if ( !empty( $_GET[ 'branch' ] ) ) {
    $branch = $_GET[ 'branch' ];
}
if ( empty( $branch ) ) {
    _output( 'Error: no branch specified!' );
    exit( 1 );
}
Run Code Online (Sandbox Code Playgroud)

知道为什么这样设置吗?与使用相比else,有什么优势,比如:

if ( !empty( $_GET[ 'branch' ] ) ) {
    $branch = $_GET[ 'branch' ];
} else {
    _output( 'Error: no branch specified!' );
    exit( 1 );
}
Run Code Online (Sandbox Code Playgroud)

Dev*_*von 7

它不检查相同的变量是否为空. $branch不一定$_GET['branch']在这个代码中,第一个检查是检查是否$_GET['branch'] 空.

在整个代码中,很可能至少有一个其他条件$branch被设置.这很可能是最后一个条件,因此最终检查是否$branch已设置.可能有更好的方法来解决这个问题,但没有看到整个代码,我无法告诉你.


根据您在下面的评论,这是同样的事情,甚至更简单:

$branch = $_GET[ 'branch' ];
if ( empty( $branch ) ) {
    _output( 'Error: no branch specified!' );
    exit( 1 );
}
Run Code Online (Sandbox Code Playgroud)

为什么如果在所有上使用$_GET['branch'],如果$branch只能是$_GET['branch']

更好的是,您可以使用三元运算符来设置默认分支并避免出错的可能性.

$branch = (empty($_GET['branch'])) ? DEFAULT_BRANCH : $_GET['branch'];
Run Code Online (Sandbox Code Playgroud)