我有这个条件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)