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