PHP 備忘録 | メシのタネ

このエントリーをはてなブックマークに追加

PHP IF文 条件式が2つある場合の評価

 2013/05/09

if文は色んなとこで紹介されてますが、
ちょっと変わった使い方しようとすると困ります。

if文でよくはまりました。
なぜなら条件が分からないから。
今日はその話をするわけじゃないですけど。条件調べる方法を書きます。
基本的に条件式を評価するのがIF文です。

分からないときはvar_dumpかなんかでbool値が返るようにに仕向けます。
極端にやるとこんな感じに。


<?php

$a = 'abc';
$b = 'abc';

var_dump($a === $b);

IF文は真偽値を判断する構文

条件を評価するのがIF文です。
だから条件はさっき書いたように、真偽値が返る様に仕向けてやる必要があります。

つまり、trueかfalseが返るように式を作ります。
式を作るのは自分です。
さっきのを使うとこうなります。


<?php

$a = 'abc';
$b = 'abc';

if($a === $b)
{
	echo $a;
}

if(!empty($a))
{
	echo 'あのびっくりマークつけると否定になります。違う場合真になります。';
}


色んな比較の仕方があります。

さっきのは変数同士を完全一致で比較しました。
数字とかでも比較する事ができます。


<?php

$a = 0;
$b = 5;

if($a < $b)
{
	echo '$bのが大きいぞ';
}

みたいな条件でも式の結果がbool値になるので比較ができます。

二つの式を比較する場合

1個だけしか比較できないといろいろ融通が利かないので、
式を二つ比較することができます。

式を二つ比較する際には、orかandの演算子を用います。

orは||

andは&&

別にこれどっちでも良いらしいですけど、
僕は演算子しか使った事ないです。


$a = 'abc';
$b = 'abc';
$c = 'abc';
$d = 'abc';

//左辺が真でかつ、右辺が真の場合

// 左辺true     右辺true
if(($a === $b)&&($c === $d))
{
	echo '左辺、右辺両方の値が真なので、これは表示されます。';
} else if(($a === $b)||($a === $b)) {
	echo 'これは、左辺か右辺、どっちかが真なら表示されます。';
}

論理演算子で評価した式を比較することもできる

なんか適当な言葉が見つかりませんが、
さっきみたいに二つの式を一塊にして評価することもできます。
たとえばこんな感じに。

<?php
$a = 'abc';
$b = 'abc';
$c = 'abc';
$d = 'abc';
$e = 'abc';
$f = 'abc';
$g = 'abc';
$h = 'abc';

  ↓  真かつ真       ↓かつ↓     真かつ真の場合  ↓
if((($a === $b)&&($c === $d))&&(($e === $f)&&($g === $h)))
{

 echo '括弧で括って式を一塊にできます。';

}

普通だよねって話ですが、こういう比較の仕方知らないと


$a = 'abc';
$b = 'abc';
$c = 'abc';
$d = 'abc';
$e = 'abc';
$f = 'abc';
$g = 'abc';
$h = 'abc';

// ↓ここ真↓かつ↓ここ真↓かつ↓ここ真↓ かつ↓ここ真↓
if(($a===$b)&&($b===$c)&&($d===$e)&&($f===$g))
{
	echo 'こうならいいですが';
}


// ↓ここ真↓ か↓ここ真 ↓かつ↓ここ真↓かつ↓ここ真↓
if(($a===$b)||($b===$c)&&($d===$e)&&($f===$g))
{
	echo 'こうorとか入った時に意図しない結果になります。この場合は真ですけど';
}

やってて気がついたんですが、これ、式が1個になるからなんですね。いやこれなってねぇ

本とかちゃんと読んでないと、説明できませんね。
経験値の話ですかね。勉強不足か。精進します。


このエントリーをはてなブックマークに追加

コメント

"PHP IF文 条件式が2つある場合の評価"
でメシのタネのおすすめを検索したよ!

プログラミング備忘録 | メシのタネ