переписывание оператора if в PHP - PullRequest
0 голосов
/ 16 августа 2011

У меня есть условное выражение 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();

Верна ли моя новая версия?или это не лучшая идея?

Спасибо.

Ответы [ 3 ]

4 голосов
/ 16 августа 2011

Самый простой способ:

if (!(*old condition here*))
3 голосов
/ 16 августа 2011

Полагаю, что это правильно, зависит от того, что вы хотите сделать.

Если у вас есть условие, которое вы просто хотите отменить, вы можете заключить все в !():

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'] ) ) ...
1 голос
/ 16 августа 2011

Да, полностью правильно и, вероятно, лучший вариант. Альтернативой будет

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

, но это не так хорошо, как PHP придется оценивать все переменные.По вашему усмотрению он может остановиться, когда выполнено одно из условий (так как это ИЛИ)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...