MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
PHPの基礎 - 条件分岐のソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
PHPの基礎 - 条件分岐
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == プログラムは記述した順に実行されるのが基本であるが、条件により実行する処理を分岐させる場合がある。<br> ここでは、if文やswitch文を使用して、処理を分岐する方法について記載する。<br> <br><br> == if文の基礎 == if文は、条件により処理を分岐させるために使用する。<br> <br> if文の書式は、以下の通りである。<br> 条件式には、<code>==</code>や<code>></code>等の比較演算子を使用した条件式を記述する。(比較演算子については、次のセクションを参照すること) if(条件式) { <条件式が真の時に実行する処理> } <br> 実行される処理が1つだけの場合は、ブロックを省略してもよい。 if(条件式) <条件式が真の時に実行する処理> <br> 以下の例では、変数Numに格納した値が20以上かどうかを判別して、真であればブロック内の処理を実行する。 <syntaxhighlight lang="php"> $Num = 30; if($Num >= 20) { print '年齢は20才以上です'; } </syntaxhighlight> <br><br> == 論理値 == if文の条件式には、比較演算子を使用した条件を記述するが、条件が正しい場合は、式そのものがtrue(真)という値を持つ。<br> 条件が正しくない場合は、式そのものがfalse(偽)という値を持つ。<br> <br> このように、比較演算子は評価した結果として、true(真)かfalse(偽)のいずれかの値を返す。<br> この2つの値が論理値である。(論理値はデータ型の1つで、trueまたはfalseのいずれかである)<br> <br> 比較演算子のように結果として論理値を返すが、変数に明示的に論理値を代入することもできる。<br> <syntaxhighlight lang="php"> $flag = true; if($flag) { <条件式が真の時に実行する処理> } </syntaxhighlight> <br> また、if文の条件式に他のデータ型の値を記述する場合、自動的に論理値に型変換が行われて評価される。<br> 型変換が行われて、false(偽)となる値は以下の通りである。<br> 上記以外の値は、全てtrueに変換される。(例. 数値の15や文字列の"Hello"等はTRUEに変換される)<br> FALSE 整数の0と浮動小数点数の0.0 空文字"" 文字列の"0" 要素の数が0の配列 NULL メンバ変数の数がゼロであるオブジェクト <br><br> == 比較演算子 == 下表に、PHPで用意されている比較演算子(関係演算子)の種類を示す。<br> <center> 表. 比較演算子(関係演算子)<br> {| class="wikitable" style="background-color:#fefefe;" |- ! style="background-color:#00ffff;" | 演算子 ! style="background-color:#00ffff;" | 記述例 ! style="background-color:#00ffff;" | 意味 |- | == || a == b || bとaの値が等しい |- | === || a === b || bとaの値が等しく型も等しい |- | != || a != b || bとaの値が等しくない |- | <> || a <> b || bとaの値が等しくない |- | !== || a !== b || bとaの値または型が等しくない |- | > || a > b || bよりaが大きい |- | >= || a >= b || bよりaが大きいか等しい |- | < || a < b || bよりaが小さい |- | <= || a <= b || bよりaが小さいか等しい |} </center> <br> ==== 値の比較 ==== 以下の例では、いくつかの比較演算子を使用している。<br> 演算子に関する優先順位は、演算子の優先順位を参照すること。<br> <syntaxhighlight lang="php"> $num = 20; if($num == 20) { print "変数numの値は20と等しい"; } </syntaxhighlight> <br> <code>==</code>演算子は、右辺と左辺のデータ型が異なる場合でも比較が行われる。<br> この時、自動的に型の変換が行われて、例えば、数値の5と文字列の"5"を比較した場合、文字列は数値に変換されて数値として比較される。<br> 結果的にこの比較はtrueとなる。<br> <br> 文字列同士の比較では、<code>strcmp</code>関数を使用して比較するとこともできる。<br> なお、値が等しくないかどうかを判別するには、<code>!=</code>演算子または<code><></code>演算子を使用する。この時、値が等しくない場合はtrueを返す。<br> <br> ==== 値とデータ型の比較 ==== <code>==</code>演算子では、値が等しいかどうかをだけを判別するため、数値と文字列の比較でも等しくなる場合がある。<br> 型が等しいかどうかも含めて比較するには、<code>===</code>演算子を使用する。<br> <br> 以下の例では、<code>===</code>演算子の右辺と左辺を比較して型と値が等しければtrueを返す。<br> <syntaxhighlight lang="php"> $num = 20; if($num === 20) { print "変数numの値は20と等しい"; } </syntaxhighlight> <br> <code>===</code>演算子では、右辺と左辺のデータ型が異なる場合は、型変換は行われない。<br> 以下の例では、データ型が異なるためfalseを返す。<br> <syntaxhighlight lang="php"> $num = 20; if($num === "20") { print "変数numの値は文字列の20と同一"; } </syntaxhighlight> <br> なお、値またはデータ型が等しくないかどうかを判別するには、<code>!==</code>演算子を使用する。<br> この時、値またはデータ型が等しくない場合、trueを返す。<br> <br> ==== 大小の比較 ==== 2つの値の大小を比較するには、<code><</code>、<code><=</code>、<code>></code>、<code>>=</code>演算子を使用する。<br> <br> なお、文字列の値の大小を比較する場合、先頭の文字から辞書順で比較する。<br> <syntaxhighlight lang="php"> $num = 20; if($num > 10) { print "変数numの値は10よりも大きい"; } if($num <= 30) { print "変数numの値は30以下である"; } </syntaxhighlight> <br><br> == 論理演算子 == 論理演算子では、AかつB、AまたはB等のように、条件式を組み合わせて複雑な条件式を使用する場合がある。<br> このような時に論理演算子を使用する。<br> <br> 下表に、PHPで用意されている論理演算子を示す。<br> <center> 表. 論理演算子<br> {| class="wikitable" style="background-color:#fefefe;" |- ! style="background-color:#00ffff;" | 演算子 ! style="background-color:#00ffff;" | 記述例 ! style="background-color:#00ffff;" | 意味 |- | &&<br>または<br>and || a && b<br> a and b || aとbが共に真の場合に真 |- | <nowiki>||</nowiki><br>または<br>or || a <nowiki>||</nowiki> b<br>a or b || aかbの少なくとも1つが真の場合に真 |- | ^<br>または<br>xor || a ^ b<br>a xor b || aかbのどちらか1つだけが真の場合に真 |- | ! || !a || aが真の時に偽、偽の時に真 |} </center> <br> 論理演算子では、左辺および右辺に関係演算子を使用した条件式を記述する。<br> そして、各条件式の評価の結果と論理演算子により、式全体の評価を論理値で返す。<br> <br> 演算子に関する優先順位は、演算子の優先順位を参照すること。<br> <br><br> == 条件式が偽の時の処理(if..else) == if文では、条件式がfalse(偽)の時に実行する処理も記述することができる。<br> <br> 書式は以下の通りである。<br> if(条件式) { 条件式が真の時に実行する処理1 条件式が真の時に実行する処理2 } else { 条件式が偽の時に実行する処理1 条件式が偽の時に実行する処理2 } <br> また、実行する処理が1文のみの場合は、ブロックを省略して以下のように記述してもよい。 if(条件式) 条件式が真の時に実行する処理 else 条件式が偽の時に実行する処理 <br> <syntaxhighlight lang="php"> $old = 18; if($old >= 20) { print '年齢は20才以上です'; } else { print '年齢は20才未満です'; } </syntaxhighlight> <br><br> == 複数の条件分岐(if..elseif..else) == if文では、複数の条件式を組み合わせることも可能である。 書式は以下の通りである。 if(条件式1) { 条件式1が真の時に実行する処理 } elseif(条件式2) { 条件式2が真の時に実行する処理 } elseif(条件式3) { 条件式3が真の時に実行する処理 } else { 全ての条件式が偽の時に実行する処理 } <br> まず、条件式1を評価して、真の場合はブロック内の処理を実行して終了する。 条件式1が偽の場合は条件式2を評価して、真の場合はブロック内の処理を実行して終了する。偽の場合は次の条件式を評価する。 全ての条件式が偽の場合、elseのブロック内の処理を実行して終了する。 なお、elseは不要であれば記述しなくてもよい。 <syntaxhighlight lang="php"> $domain = 'jp'; if($domain == 'in') { print 'インドのトップレベルドメイン'; } elseif($domain == 'cn') { print '中国のトップレベルドメイン'; } elseif($domain == 'jp') { print '日本のトップレベルドメイン'; } else { print '不明です'; } </syntaxhighlight> <br><br> == switch文 == switch文は、変数に含まれている値により、各値と順次比較して一致する場合に処理する場合に使用する。<br> 各値と順次一致しているかどうかを比較する時に使用すると、簡潔に記述できる場合がある。<br> <br> 書式は以下の通りである。<br> switch(式) { case 値1: 式が値1と等しい時の処理; break; case 値2: 式が値2と等しい時の処理; break; case 値3: 式が値3と等しい時の処理; break; default: 式がいずれの値にも等しくない時の処理; } <br> switch文では式の値を評価して、<code>case</code>の後に記述された値と順次比較する。<br> 一致する値が存在する場合は、その後に記述された処理を順次処理して、<code>break</code>に達すると終了する。<br> <code>default</code>の処理は、いずれの値にも一致しない場合に実行される処理を記述する。<br> <br> また、<code>default</code>は不要であれば記述しなくてもよい。<br> <syntaxhighlight lang="php"> $pref = '神奈川'; switch($pref) { case '東京': print '関東です'; break; case '千葉': print '関東です'; break; case '神奈川': print '関東です'; break; default: print 'その他' } </syntaxhighlight> <br> swtich文は、<code>break</code>に達するまで逐次処理を実行するため、<code>break</code>を省略する場合、他の<code>case</code>の後に記述した処理も引き続き実行する。<br> この特性を利用して、複数の値に一致した場合に同じ処理を行う場合は、以下のように記述する。<br> <syntaxhighlight lang="php"> $pref = '神奈川'; switch($pref) { case '東京': case '千葉': case '神奈川': print '関東です'; break; case '愛知': print '東海です'; break; default: print 'その他'; break; } </syntaxhighlight> <br><br> == 三項演算子 == 三項演算子は、3つの項目を使用する演算子である。<br> <br> 書式は以下の通りである。<br> 条件式を評価して、trueであれば式1、falseであれば式2を返す。<br> <条件式> ? <式1> : <式2> <br> if文とは異なり、三項演算子は演算子の1つであるため、結果として式を返す。<br> if文のように、条件に応じた処理を記述するのではない点に注意すること。<br> <syntaxhighlight lang="php"> $lang = 'en'; $msg = $lang == 'jp' ? 'こんにちは' : 'Hello'; print $msg; </syntaxhighlight> <br><br> {{#seo: |title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki |keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板 |description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux |image=/resources/assets/MochiuLogo_Single_Blue.png }} __FORCETOC__ [[カテゴリ:Web]]
PHPの基礎 - 条件分岐
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse