[php]変数が空っぽだったら、の条件分岐

単純に。

こう

ベーシックに。

if($a ==''):
    print('空っぽ');
else:
    print('なにか入ってる');
endif;

除外で書くとこんな感じ。

if($a !=''):
    print('なにか入ってる');
else:
    print('空っぽ');
endif;

変数だけをぶっこむと中身の有無が条件分岐になる。

if(!$a):
    print('空っぽ');
else:
    print('なにか入ってる');
endif;

複数すべての空判定はこうなる。

if(!$a && !$b && !$c && !$d && ...):
    print('全部空っぽ');
else:
    print('どっかになにか入ってる');
endif;

数個程度の複数条件ならいいけどめっちゃ多い場合は書くのがだるい。

ひとつの解として、配列にぶっこんで照合するのも良いんじゃないかと思う。

//チェックする変数
$sample1 = '';
$sample2 = '';
$sample3 = '';
$sample4 = '';
$sample5 = '';
$sample6 = '';
$sample7 = 'aaa';
$sample8 = '';
$sample9 = '';

//変数を配列に入れる
$checkarr = array($sample1,$sample2,$sample3,$sample4,$sample5,$sample6,$sample7,$sample8,$sample9);
//チェック用変数
$result = 0;
//配列を展開して、空欄じゃない変数だったら+1する
foreach($checkarr as $value):
    if($value):
        $result++;
    endif;
endforeach;

//1以上だったらどっかになにかある
if($result == 0):
    print('全部空っぽ');
else:
    print('どっかになにか入ってる');
endif;

変数の中身は空であっても配列に変数が入ってることは変わらないので、配列自体が空の判定になる状況にはならない。なので展開しなきゃいけない。

配列に入れる作業がだるいのとコードが長くなるってのは結局どうなのよって感じですが。

ifに直接入れていく方法だと除外以外の条件もつけられるんで、いっぱい並べてる中でいろんなことをしていた場合、後で手を入れる際に見落としてたらしんどくなる。今回みたいに除外一辺倒のチェックとか、それ以外の動作はしないってときは、それ以外ができないような組み方をしたほうがいいんじゃないかと思ったりもする。

余談:true/falseの判定

$a = false;
if($a):
    print('true<br>');
else:
    print('false<br>');
endif;

true/falseを仕込んだ変数を指定して条件分岐すると、中身の有無じゃなくてtrue/falseの振り分けになる。

変数を直接指定して条件分岐するときに、変数の中身が色々混ざってると面倒なことになる可能性があるので注意。

コメント

タイトルとURLをコピーしました