Проверьте, являются ли переменные пустыми - PullRequest
0 голосов
/ 28 января 2012

У меня есть $var1, $var2, $var3 и $type.Я хочу проверить, являются ли $var1 и $var2 пустыми, когда $type=1, но когда $type=2 Я хочу проверить, являются ли $var1, $var2 и $var3 пустыми.

I 'мы пробовали с

 if(($type==1 AND empty($var) AND empty($var1)) OR ($type==2 AND empty($var1) AND empty($var2) AND empty($var3)))
 {//...}

, но во втором случае это не работает, когда $type=2; Так, как это сделать с одним оператором if?

Ответы [ 3 ]

3 голосов
/ 28 января 2012

Не используйте «если», но воспользуйтесь переключением дел в переключателе

$result = TRUE;
switch ($type) {
    case 2:
        $result = $result && empty($var3);
    case 1:
        $result = $result && empty($var2);
        $result = $result && empty($var1);
        break;
    default:
        $result = FALSE;
}
1 голос
/ 28 января 2012

В первом случае вы написали $var вместо $var1.

Видите, с разрывами строк:

if (
    ($type==1 AND empty($var) AND empty($var1))
   OR
    ($type==2 AND empty($var1) AND empty($var2) AND empty($var3))
   ) {}
//                        ^

Вы бы заметили это, если бы ваш код былне полностью неразборчиво.

В противном случае ваш код выполняет так, как рекламируется :

<?php
$type = 2;
$var  = '';
$var1 = '';
$var2 = '';
$var3 = '';

if(($type==1 AND empty($var) AND empty($var1)) OR ($type==2 AND empty($var1) AND empty($var2) AND empty($var3))) {
   echo '!';
}

// Output: !
?>

Этот факт делает этот вопрос вообще не подлежащим сомнению.,Пожалуйста, позаботьтесь о своих вопросах в будущем, предоставив реальные тестовые случаи, которые на самом деле воспроизводят проблему, чтобы доказать, что вы не просто совершили какую-то другую ошибку, которую не нам показываете.

1 голос
/ 28 января 2012

Я рекомендую использовать несколько операторов if:

switch($type) {
  case 1: if(empty($var1) && empty($var2)) {
    …
  }
  break;
  case 2: if(empty($var1) && empty($var2) && empty($var3)) {
    …
  }
   break;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...