2012-01-28 20 views
-3

私は$var1$var2,$var3および$typeを持っています。 $type=1の場合$var1$var2が空であることを確認したい場合は$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))) 
{//...} 

で試してみたが、if文$type=2; が、これは1に成し遂げるために、どのようにするときは、第2の場合には動作しませんか?

+3

私には正しいと思われます。醜いですが、有効です。 –

+0

最初の空のステートメントでは '$ var'を使い、タイプ2をチェックするときは' $ var1'を使います。意図されているか誤植ですか? – 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

と書くことができます。 – lam3r4370

+0

@ lam3r4370:可能です。あなたのコードはちょうど良い方法で動作します(ただし、それは醜いので、それを変更することを推奨しています)。私の答えを見てください。実際には、一番上の答えだけでなく、答えをすべて読んでください。 –

1

私は複数を使用することをお勧めしますif文:

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

良いアドバイスの間、これは記載された質問に答えるものではありません。問題は「私のコードが私が期待している機能を実行しないのはなぜですか?」答えは「そうです」です。 –

1

に例を通じて落下を利用しないでください、 $var1の代わりに$varと書きました。改行と

を参照してください、:あなたのコードが完全に判読できなかった場合は、これを発見してきたと思います

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

関連する問題