御参拝、誠に有難う御座います。住職(管理人)の修羅観音です。
PHPで仏教プログラミング、前回はif文による条件分岐についてお伝えしております。
今回も、PHPというプログラミング言語における条件分岐文についての話ですが、if文ではありません。
今回お伝え致しますのは、「switch文」による条件分岐です。
PHPにおける「switch文」というのは、Rubyで言いますと、case文と似ておりますかね。
Rubyでcase文を使った事がある人でしたら、何となく想像出来るかと存じます。
PHPでは、条件分岐と言えばif文を使えば大体の事は出来ます。
ただ、if文で書いていると、何回も「else if,else if,またelse if・・・うがー!」とならずに、スッキリと書く事が出来ると言われております。
実際に私も書いてみたところ、なるほど、確かに見た目もすっきりした感じがするというのも、頷けるなあ、と味わったもので御座います。
まあ、どちらがより書きやすいかは、慣れもありましょうがね。
今回のPHPで仏教プログラミングは、switch文による条件分岐について学ぶ事と致しましょう。
Contents
PHPで仏教プログラミング:仏教サイドの前提知識
PHPで仏教プログラミング、今回はswitch文を使って、高僧にランダムに登場して頂くプログラムを作ることに致しましょう。まあ、早い話が、if文の時に作った、高僧ランダム表示プログラムのswitch版というわけですな。
なんともひねりが無いと思われそうですが、比較して学びやすくなりましょうから、ご勘弁をば。
今回は、浄土仏教に関する高僧に、ご登場願うと致しましょうか。
浄土仏教と言えば、お念仏の教えが御座いますから、登場して頂くのは「善導大師、法然上人、親鸞聖人、蓮如上人」とします。
善導大師については、もしかしたらあまり馴染みが無いという人もいらっしゃるかと存じます。
歴史の授業で仏教の項目を学ぶ時でも、あまり名前が出てこないような、そんな印象もありますし。
少なくとも私が中学生の頃は、法然上人と親鸞聖人は鎌倉時代の項目で習いましたが、善導大師については習いませんでしたからね。
善導大師については、Rubyの時にも少しだけお伝えしたかと存じます。
参照記事:「Rubyで仏教プログラミング|配列を使って高僧を表示・出力していく」
参照記事2:「Rubyで仏教プログラミング|while文とfor文の違いを正信偈七高僧配列を使って学習する」
また、私は奈良国立博物館の「源信 地獄・極楽への扉展」にて、お顔を拝見してきました。
参照記事:「奈良国立博物館「源信:地獄・極楽への扉」となら仏像館の感想文|待ち時間なく混雑も無かった平日の観覧」
なにはともあれ、善導大師、法然上人、親鸞聖人、蓮如上人は、お念仏の教えで繋がっている高僧方です。
今回は、この4人の高僧が、ランダムで表示されるプログラムを書いていくことと致します。

PHPで仏教プログラミング:PHPというプログラミング言語サイドの前提知識
続いて、PHPというプログラミング言語サイドの前提知識を、予習しておきましょう。ひとまず、今回の命題・テーマであります「switch文」の書き方について、基本的な事をここで予習致します。
まず、いつものように「<?php ?>」を書いて準備致します。
次に変数を用意します。
変数は任意の名前を付けて頂くとして、ここではわかりやすく「$i」としましょうか。
ここでは仮に「&i = 1」とします。
そしていよいよ、switch文を書いていきます。
switch文の始まりは、switch文 (変数)とし、条件分岐は「case 条件:」という具合に書いていきます。
この時に、「:(コロン)」を付け忘れたり、「;(セミコロン)」を間違って書かないように注意しましょう。
PHPでは、「;」をよく使いますから、この辺りで間違う可能性があります。
「case 条件:」で条件を指定したら、次にその条件に合致すれば実行される処理を書きます。
そして、実行される処理を書いたら、「break;」を書いて、条件に合致したらswitch文から解脱するようにします。
この「break;」も忘れやすいから要注意。
例として、変数の値によって、3つの条件分岐のうちのどれかが実行される、というswitch文を書くと、次の通りになります。

これを実行すると、出力結果は「変数の値は1です」と表示されます。
これを踏まえて、高僧ランダム表示プログラムを作っていきましょう。


PHPで仏教プログラミング:switch文を使った高僧ランダム表示プログラム
仏教サイドとプログラミング言語サイド・PHPサイドの前提知識を学んだところで、いよいよ本格的に、「高僧ランダム表示プログラム」を書いていきましょう。今回は、「善導大師、法然上人、親鸞聖人、蓮如上人」が、ランダムで表示されるというプログラムを、switch文を使って書いていきます。
まず、変数を用意するのですが、変数はわかりやすく「$namu」としましょうか。
お念仏は「南無阿弥陀仏(なむあみだぶつ)」と称えますから、$namuとしたらわかりやすい事でありましょう。
「$namu」は、ランダムで代入される値が変化するようにしたいから、rand関数を使います。
今回の例ですと、高僧は4人おわしますから、1から4までの値を用意する事で、4人の内のお一人が表示される、というプログラムを作ることが出来ます。
「$namu = rand(1,4);」とすれば、$namuに1から4までのどれかの数値が代入されます。
変数「$namu」が用意出来たら、次はswitch文を書いていきます。
「switch(変数)」で、条件分岐の文を書いていくという話でしたね。
ここでは、「switch($namu)」と書く事で、switch文を始める事が出来ます。
そして、$namuの値が、1から4まで、どの値が入るとどのような処理が実行されるか、という事を、「case」と「break」を使って、それぞれ書いて行きます。
例えば、変数namuの値が1だった時に、「善導大師」が表示されるという条件を書く場合は、「case 1:」を書き、その次に「echo “善導大師”;」と書きます。
そして、変数の値が条件に合致したら、switch文を解脱するように、「break;」を書き忘れないようにします。
これを「case 2:」「echo “法然上人”」と、代入された値に対応した実行される処理を書いて行きます。
この完成形が、こちらの画像にある通りです。

これで、XAMPPを使ってウェブブラウザで表示されるようになると、条件に合致する高僧の名前が、ブラウザ上に表示されます。
F5を押してブラウザを更新してみると、高僧の名前が変わっていくことが、確認出来るかと思います。
この機能を使えば、サイコロプログラムも簡単に作る事が出来ると、把握出来るかと存じます。
また、別の書き方として、if文の「else」に当たる使い方が出来て、「どのcase条件にも当てはまらない場合は、この処理を実行する」という事を指定する方法が御座います。
それは「default句」を使うという方法で、「どの条件にも当てはまらない時は、これをデフォルト(default)で実行する」という意味で捉えて頂くと、わかりやすいかと存じます。
実際に書いてみると、こんな感じです。

赤い矢印に書いた通り、「case 4:」が「default:」に変わっているのが、おわかり頂けるかと存じます。
こうする事で、1から3以外の数値が出たら、「蓮如上人」が表示される、というプログラムになります。
この書き方を知っていると、例えば「1から6までの数字の中で、4から6までは全て蓮如上人を表示させたい」という場合、いちいちcase句を連ねる必要がなくなりまして、コードをスッキリと書く事が出来るというわけです。
PHPのswitch文について、基本的な書き方は、このようなところであります。

switch文を書く際の注意点
switch文を書く際に、注意点と言いますか、ついついやってしまいがちになりそうな事を、ここでお伝えしておきます。かくいう私も、今回の高僧ランダム表示プログラムを書いた時、ブラウザで表示させる際にエラーになり、「なんでだろう?」と、少し考えた事がありましてね。
その教訓を活かして。
break;を忘れずに
switch文では、本でもウェブ上で解説されている処でも、「break;を忘れずに」と、注意してくれています。そして、私もこれは大切な事であると感じておりまして、ここでも「break;を忘れずに」と、釘を刺しておきます。
もしも、PHPでプログラムを書く際に、「break;」という句を書き忘れると、どうなるか。
今回の例で言いますと、「$namu」という変数に「1」が代入された場合、「break;」が出てくるまでの間の処理が、全て実行されます。
試しに、「break;」を書かなかったコードを書いて、実行してみましょうか。

「法然上人」が実行されるcase句があるところまで「break;」を書かず、「法然上人」がおわしますところで、やっと「break;」を設置し、$namuに1が代入された場合、こうなります。

このように、「break;」を書き忘れると、「break;」を書いたところまで、全て表示されてしまい、条件分岐の意味をなしません。
こうならないように、PHPでswitch文を書く際には、「break;」を忘れないようにしましょう。

「case句」と「default句」の後ろは「:(コロン)」
もう一つ、PHPでswitch文を書く際に、間違えやすくて注意すべき点は、「:(コロン)」と「;(セミコロン)」です。PHPでは、変数を用意した後や、「echo」で文字列を表示させるというプログラムを書いた後など、とにかく頻繁に「;(セミコロン)」を用います。
その癖がついている状態で、switch文を書くようになると、「case句」を書く時に、「case 1;」と、「:(コロン)」にすべき箇所を「;(セミコロン)」にしてしまう事も考えられます。
気をつけていれば、とは思うのですがね、私もやったことがあります。
ドットを一つ書くか書かないかというレベルで、プログラムは動きません。
同様に、「:(コロン)」と「;(セミコロン)」を間違えただけで、エラーとなります。
間違えやすい点ですから、最初の内は「caseのところは、きちんとコロンになっているかな?」と、逐一確認する位が、宜しかろうと存じます。
これは、自戒も込めて。
if文とswitch文を華麗に使いこなして、条件分岐を自在に
今回は、PHPというプログラミング言語における条件分岐の書き方、switch文を使った条件分岐について学びました。このような事柄は、細かく質問して細かく学べる環境が、現代には用意されています。
プロエンジニア(ProEngineer)プログラマカレッジでしたら、PHPとJavaを教えてくれますし、PHPを学ぶ際に、同時に学んでおきたいHTMLとCSSも学べて、非常に有り難し。
参照記事:「ProEngineer(プロエンジニア)は無料なのに終活支援付きでプログラミングを学べるとは凄い!」
参照記事2:「ProEngineer(プロエンジニア)のプログラマカレッジ情報総集編|無料プログラミングスクールは本当に有り難い」
参照記事3:「PHP独学習開始|プロエンジニア(ProEngineer)プログラマカレッジなら無料で実践的に学べる」

switch文を学んでいて、「:(コロン)」と「;(セミコロン)」を書き間違っていることに気づかなかったりすると、独学習では長い時間、右往左往することもあります。
私もプログラミング独学習を進めている時に、ちょくちょくとそんな事が御座いまして。
こういう時に、ProEngineer(プロエンジニア)のプログラマカレッジで学んでいれば、講師がさくっと解決してくれる有り難さがあるだろうになあ、と、思うばかりであります。
きちんと専門家や指導出来る人が観ると、傍目八目とはよく言ったもので、そういう間違いもきちんと即座に指摘してくれる事も御座いましょう。
ほんと、ProEngineer(プロエンジニア)のプログラマカレッジは、年齢制限がなければねえ。
今回のswitch文について、if文も復習して、違いを学びながら実践してみると、より理解も深まるかと存じます。
参照記事:「PHPで仏教プログラミング|if文による条件分岐とrandで高僧の名前をランダムに表示」
どちらも使いこなせるようになっておけば、より柔軟かつスッキリとしたコードを書く事が出来ましょう。
今回の話が、あなたのプログラミング学習に役立ち、また、仏縁となりますれば、嬉しゅう御座います。
合掌、礼拝