用PHP重写if语句


rewriting if statement in PHP

我有这个条件if语句:

if ( isset($_POST['x']) && empty($_POST['x']) && isset($_SESSION['x']) && $_SESSION['x'] )
    $response['x'] = 1;
else
    $response['x'] = 2;

我想把它变成相反的东西,例如:

if ( !isset($_POST['iQapTcha']) || !empty($_POST['iQapTcha']) || !isset($_SESSION['iQaptcha']) || !$_SESSION['iQaptcha'] )
    $response['captcha'] = 2;
    exit();

我的新版本正确吗?还是说这不是个好主意?

谢谢。

最简单的方法:

if (!(*old condition here*))

我想这是否正确取决于你想做什么。

如果你有一个你只想否定的条件,你可以把所有东西都括在!():

if( a == b && c == d ) ...
// the negation is:
if( !( a == b && c == d ) ) ...

附加注释:( !isset( $x ) || !empty( $x ) ) == !empty( $x ),因此您的第二个语句可以缩短为

 if( !empty($_POST['iQapTcha']) || !empty( $_SESSION['iQaptcha'] ) ) ...

是的,完全正确,而且可能是最好的选择另一种选择是

if !( isset($_POST['x']) && empty($_POST['x']) && isset($_SESSION['x']) && $_SESSION['x'] )

,但它没有PHP那么好,因为PHP必须计算所有的变量。使用您的选项,它可以在满足其中一个条件时停止(因为它是OR)