2012-01-28 4 views
-3

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

Я попытался с

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

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

+3

Выглядит для меня. Уродливый, но действительный. –

+0

Вы используете '$ var' в своей первой пустой инструкции и' $ var1' при проверке type2. Предполагаемый или опечатка? – knittl

+2

Оказывается, «не работает» - бессмысленно, как есть - даже не точно. См. Мой ответ. –

ответ

3

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

$result = TRUE; 
switch ($type) { 
    case 2: 
     $result = $result && empty($var3); 
    case 1: 
     $result = $result && empty($var2); 
     $result = $result && empty($var1); 
     break; 
    default: 
     $result = FALSE; 
} 
+0

Мне нравится этот подход. В случае 1 вы можете написать '$ result = $ result && empty ($ var2) && empty ($ var1);' – knittl

+0

Так что я не могу сделать это только с одним, если с несколькими операторами if + switch? – lam3r4370

+0

@ lam3r4370: Да, вы можете. Ваш код работает так же хорошо, как и он (за исключением того, что он уродливый, поэтому рекомендуется изменить его). См. Мой ответ. На самом деле, прочитайте _все_ ответы, а не только верхнюю. –

1

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

switch($type) { 
    case 1: if(empty($var1) && empty($var2)) { 
    … 
    } 
    break; 
    case 2: if(empty($var1) && empty($var2) && empty($var3)) { 
    … 
    } 
    break; 
} 
+0

Хотя хороший совет, это не отвечает на поставленный вопрос. Вопрос в том, «почему мой код не выполняет функцию, которую я ожидаю от этого?» Ответ: «Это так». –

1

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

Престола, с разрывами строк:

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

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

В противном случае, your code does perform as advertised:

<?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: ! 
?> 

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

+0

Вы правы. Я не знал этого сайта, таким образом, я не воспроизвел проблему. Спасибо за советы :) – lam3r4370

Смежные вопросы