PHP入門というシリーズ – 第七回

2019年10月6日

前回からだいぶ空きましたが、第七回では初心者がつまづきやすい「関数」について
解説していこうと思います。

関数は何かを入れて結果を返すもの

PHPにはおびただしい数の関数が用意されています。私自身それらを全て覚えている
わけではなく、そもそも全て覚える必要はありません。
見出しの通りですが、関数は「入力されたデータを元に何かしらの結果を返す」命令
です。ちょっと用語的なお話になりますが、入力されたデータの事を引数結果の事を
戻り値と呼んでいますのでこれは覚えておくと色々な解説が理解しやすくなると思うし、
何よりそれっぽいので覚えておきましょう。

ユーザー定義関数

冒頭で記載した「おびただしい数の関数」の中から選んで使用する事もありますが、
特に関数として覚えなくてはいけない構文がユーザー定義関数です。
これは開発者(ユーザー)が自分で書く(定義)処理の事です。

基本構文

税込計算を行う関数を作ってみました。

実行すると、1080と表示されると思います。

ざっくり解説

上記基本構文を1行ずつ見て行きましょう。

2行目はそれぞれ
function ← 関数定義するよ
tax_calc ← こういう名前つけるよ
($price) ← 引数だよ
という意味です。つまり、tax_calcというのが関数名でこれは自由に決められます(自由とは
いっても、cssのクラス名や変数名などと同じレベルの制限はありますが、基本的に自由です)
そして、このtax_calcには一つの引数が必要で、この引数名も自由です。それぞれわかりやすい
ものをつけておくと後で見返した時に便利ですね。
引数は複数指定する事も出来ますが、必要な時に調べましょう。この記事はとにかく関数って
なんだよという概要を理解する為のものなので!

3行目では
$price = $price * 1.08
と書いてありますね。これは簡単、入力されて来たデータ($price)に1.08を掛けて税込計算
しているわけです。

4行目で
return $price;
と書いて、計算した結果を返してあげます。

5行目はただの閉じ括弧なので、7行目を見ましょう。
echo tax_calc(1000)
tax_calcという名前の自分が付けた関数に、1000という数字を入力して、計算して、返ってきた
結果をechoで出力しています。

変数の有効範囲について

関数の概要を理解出来たら、今度は変数の有効範囲を意識する必要が出てきます。
これは「スコープ」と言われるのですが、次の例をご覧下さい。

実行すると、1が表示されると思います。
$num++; と書いているので、$numの初期値に1が加算されて2が返って来そうですよね。
何故1が返されるのでしょうかというお話です。

ローカル変数とグローバル変数

ちょっとややこしい話ですが、変数が関数の中にあるか外にあるかが今回のポイントです。
関数内にある変数の事を「ローカル変数」
関数外にある変数の事を「グローバル変数」
と呼ぶのですが、これらは同じ名前でも違うものとして処理されてしまいます。
上の例で考えると、最初に書いた$numはグローバル変数で、functionの中にある$numがローカル
変数となるので、2つの$numは全く別物ということになるわけです。だから関数内にある$numは
何も入っていないと見なされ、0に1を加算して結果1が返ってくるという仕組みです。

もし、グローバル変数を強制的にローカル変数として使用する場合にはglobalという文字列を
くっつけてあげればなんとかなります。

こんな具合にすれば、関数内に書いてある$numがグローバル変数だと見なされるので、結果は
2で返ってくるはずです。

関数はとても便利で使用頻度も高いのでマスターしておきましょうね。
ではまた次回。。。