if文は色んなとこで紹介されてますが、
ちょっと変わった使い方しようとすると困ります。
if文でよくはまりました。
なぜなら条件が分からないから。
今日はその話をするわけじゃないですけど。条件調べる方法を書きます。
基本的に条件式を評価するのがIF文です。
分からないときはvar_dumpかなんかでbool値が返るようにに仕向けます。
極端にやるとこんな感じに。
1 2 3 4 5 6 | <?php $a = 'abc' ; $b = 'abc' ; var_dump( $a === $b ); |
INDEX
IF文は真偽値を判断する構文
条件を評価するのがIF文です。
だから条件はさっき書いたように、真偽値が返る様に仕向けてやる必要があります。
つまり、trueかfalseが返るように式を作ります。
式を作るのは自分です。
さっきのを使うとこうなります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php $a = 'abc' ; $b = 'abc' ; if ( $a === $b ) { echo $a ; } if (! empty ( $a )) { echo 'あのびっくりマークつけると否定になります。違う場合真になります。' ; } |
色んな比較の仕方があります。
さっきのは変数同士を完全一致で比較しました。
数字とかでも比較する事ができます。
1 2 3 4 5 6 7 8 9 | <?php $a = 0; $b = 5; if ( $a < $b ) { echo '$bのが大きいぞ' ; } |
みたいな条件でも式の結果がbool値になるので比較ができます。
二つの式を比較する場合
1個だけしか比較できないといろいろ融通が利かないので、
式を二つ比較することができます。
式を二つ比較する際には、orかandの演算子を用います。
orは||
andは&&
別にこれどっちでも良いらしいですけど、
僕は演算子しか使った事ないです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $a = 'abc' ; $b = 'abc' ; $c = 'abc' ; $d = 'abc' ; //左辺が真でかつ、右辺が真の場合 // 左辺true 右辺true if (( $a === $b )&&( $c === $d )) { echo '左辺、右辺両方の値が真なので、これは表示されます。' ; } else if (( $a === $b )||( $a === $b )) { echo 'これは、左辺か右辺、どっちかが真なら表示されます。' ; } |
論理演算子で評価した式を比較することもできる
なんか適当な言葉が見つかりませんが、
さっきみたいに二つの式を一塊にして評価することもできます。
たとえばこんな感じに。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?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 '括弧で括って式を一塊にできます。' ; } |
普通だよねって話ですが、こういう比較の仕方知らないと
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | $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個になるからなんですね。いやこれなってねぇ
本とかちゃんと読んでないと、説明できませんね。
経験値の話ですかね。勉強不足か。精進します。