php_fork
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| php_fork [2018/09/06 07:33] – 管理者 | php_fork [2018/09/06 08:08] (現在) – [if命令] 管理者 | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| + | {{tag> | ||
| + | [[start]]>[[programming_start]] | ||
| + | ====== PHP処理の分岐・比較 ====== | ||
| + | 2つの値(式の結果・数値・文字列)を比べて条件と一致するかしないかで処理を分ける事ができます。 | ||
| + | |||
| + | if命令とswitch命令があります。 | ||
| + | ---- | ||
| + | |||
| + | ===== if命令 ===== | ||
| + | 条件と一致するかしないかで二択に処理を分けれます。複数つなげることで複雑に処理を分ける事ができます。 | ||
| + | |||
| + | 判定には「=」「!」「< | ||
| + | |||
| + | 後述するswitchと比べると比較演算子が使えるので複雑な分岐が可能ですが、1回の命令で2つしか分岐できないため比較演算子を使わない複数の分岐の場合はswitchの方が処理が高速です。 | ||
| + | |||
| + | 例:下記の例ではテストの点数($point)により合格は追試かを表示する例です | ||
| + | <code php> | ||
| + | <?php | ||
| + | $point=31; // | ||
| + | if ( $point > 30 ){ | ||
| + | echo '< | ||
| + | }else{ | ||
| + | echo '< | ||
| + | } | ||
| + | ?> | ||
| + | </ | ||
| + | |||
| + | 使用できる比較演算子は下記の9種類 | ||
| + | ^演算子^説明^ | ||
| + | ^==|左辺と右辺が等しい(型は自動変換)| | ||
| + | ^===|左辺と右辺が等しく型も同じ| | ||
| + | ^!=|左辺と右辺が等しくない(型は自動変換)| | ||
| + | ^!==|左辺と右辺が等しくない・または型も違う| | ||
| + | ^<> | ||
| + | ^> | ||
| + | ^> | ||
| + | ^< | ||
| + | ^%%< | ||
| + | |||
| + | 「==」と「!=」は左辺と右辺の型が違う場合は自動的に合わせて比較評価しますが、バグ元になるので使わない方が良いです。 | ||
| + | |||
| + | ==== 用法 ==== | ||
| + | |||
| + | 1.「if」、条件が一致した時は1→2→3と処理が進み、一致しない場合は1→3と処理が進みます。2の部分でもifは使えます | ||
| + | <code php> | ||
| + | //(1) | ||
| + | if( 条件 ){ | ||
| + | // | ||
| + | } | ||
| + | //(3) | ||
| + | </ | ||
| + | |||
| + | 2.「if else」、条件が一致した時は1→2→4と処理が進み、一致しない時は1→3→4と処理が進みます | ||
| + | <code php> | ||
| + | //(1) | ||
| + | if( 条件 ){ | ||
| + | // | ||
| + | } else{ | ||
| + | // | ||
| + | } | ||
| + | //(4) | ||
| + | </ | ||
| + | |||
| + | 3.「if else if」2回の条件判定があります。条件aが一致すれば1→2→4(条件bは判定しない)、条件aが不一致なら条件bを判定して一致すれば1→3→4、不一致なら1→4と処理が進みます。これに続けてさらにelse if をつなげれば細かく分岐できます。 | ||
| + | <code php> | ||
| + | //(1) | ||
| + | if( 条件a ){ | ||
| + | // | ||
| + | } else if ( 条件b ){ | ||
| + | // | ||
| + | } | ||
| + | //(4) | ||
| + | </ | ||
| + | else ifを使わなくても次のように掛けますがelse if が増えれば増えるほと入れ子(ネスト)が増えるのでプログラムソースが見難くなります。ただしif(条件b)の前後に別の処理を入れる場合はこの方法しかありません。 | ||
| + | <code php> | ||
| + | //(1) | ||
| + | if( 条件a ){ | ||
| + | // | ||
| + | }else{ | ||
| + | if( 条件b ){ | ||
| + | // | ||
| + | } | ||
| + | } | ||
| + | //(4) | ||
| + | </ | ||
| + | 4.「if else if else」2回の条件判定があります。条件aが一致すれば1→2→5(条件bは判定しない)、条件aが不一致なら条件bを判定して一致すれば1→3→5、不一致なら1→4→5と処理が進みます。 | ||
| + | <code php> | ||
| + | //(1) | ||
| + | if( 条件a ){ | ||
| + | // | ||
| + | } else if ( 条件b ){ | ||
| + | // | ||
| + | } else{ | ||
| + | //(4) | ||
| + | } | ||
| + | //(5) | ||
| + | </ | ||
| + | ---- | ||
| + | |||
| + | ===== switch命令 ===== | ||
| + | switchは比較元の値と一致する場合に複数の分岐ができます。 | ||
| + | |||
| + | 比較には==演算子が使用されるため、型に注意が必要です。 | ||
| + | |||
| + | ifと比べると1回の命令で複数に分岐できるため**ifを多用**するよりも高速ですが、比較演算子が使えないため複雑な条件での分岐はできません。 | ||
| + | |||
| + | 例:アクセスカウンターなどに設置して1回目・50回目・100回目で特別なメッセージを流し、その他は「いらっしゃいませ」と表示する例です。 | ||
| + | |||
| + | <code php> | ||
| + | <?php | ||
| + | $count=1; // | ||
| + | switch($count){ | ||
| + | case 1: | ||
| + | echo '< | ||
| + | break; | ||
| + | case 50: | ||
| + | echo '< | ||
| + | break; | ||
| + | case 100: | ||
| + | echo '< | ||
| + | break; | ||
| + | default: | ||
| + | echo ' | ||
| + | ?> | ||
| + | </ | ||
| + | |||
| + | ==== 用法 ==== | ||
| + | |||
| + | 1.値aが比較値1と一致する場合は1→2→4、比較値2と一致する場合は1→3→4、一致しない場合は1→4と処理します。 | ||
| + | <code php> | ||
| + | //(1) | ||
| + | switch(比較元の値や式){ | ||
| + | case 比較値1: | ||
| + | //(2) | ||
| + | break; | ||
| + | case 比較値2: | ||
| + | //(3) | ||
| + | break; | ||
| + | } | ||
| + | //(4) | ||
| + | </ | ||
| + | |||
| + | 2.defaultあり:値aが比較値1と一致する場合は1→2→5、比較値2と一致する場合は1→3→5、一致しない場合は1→4→5と処理します。 | ||
| + | <code php> | ||
| + | //(1) | ||
| + | switch(値a){ | ||
| + | case 比較値1: | ||
| + | // | ||
| + | break; | ||
| + | case 比較値2: | ||
| + | //(3) | ||
| + | break; | ||
| + | default: | ||
| + | //(4) | ||
| + | } | ||
| + | //(5) | ||
| + | </ | ||
| + | |||
| + | 3.caseから次のcaseの間にbreakが無い場合は条件が一致した後に最初に見つかるbreakまでcaseを処理します。値aが比較値1と一致する場合は1→2→3→6、比較値2と一致する場合は1→3→6、比較値3・4と一致する場合は1→4→5→6、一致しない場合は1→5→6、 | ||
| + | <code php> | ||
| + | //(1) | ||
| + | switch(値a){ | ||
| + | case 比較値1: | ||
| + | // | ||
| + | case 比較値2: | ||
| + | //(3) | ||
| + | break; | ||
| + | case 比較値3: | ||
| + | case 比較値4: | ||
| + | // | ||
| + | break; | ||
| + | default: | ||
| + | //(5) | ||
| + | } | ||
| + | //(6) | ||
| + | </ | ||
| + | |||
| + | |||
| + | ---- | ||
| + | [[start]]>[[programming_start]] | ||
