前回は関数とは何か?をイメージを用いて説明しました。
今回は具体的なプログラムを用いて関数を説明したいと思います。
さっそくサンプルプログラムをみてみましょう。
<?php $a = 1; $b = 2; $c = $a * $b * $b; // $c = 1*2*2 = 4となる if($a == 1){ //$aが1ならaと表示 echo "a"; }else if($a == 2){ //$aが2ならbと表示 echo "b"; }else{ //$aが1,2以外ならcと表示 echo "c"; } echo "<br>"; //改行 if($b == 1){ //今度は$bについて同じことを行う echo "a"; }else if($b == 2){ echo "b"; }else{ echo "c"; } echo "<br>"; //改行 if($c == 1){ //最後は$cについて同じことを行う echo "a"; }else if($c == 2){ echo "b"; }else{ echo "c"; } ?>
少し長いですが、ちゃんと読むと大したことはしていません。
変数の中身によってif文を用いて表示する文字を変えているだけです。
それを$a,$b,$cに対して3回行っています。
なので、プログラムとしては重複している部分が多いと思います。
もっと言えば、if($a == 1) というプログラムの$aの部分が$b,$cに置き換わるだけです。
なんか、冗長(≒ダラダラと長い)気がしませんか?無駄が多いなぁと。
そんな風に面倒くさがり屋の方はプログラマーに向いているかもしれません。
関数はこの冗長さを解消することができます。
上のプログラムを関数を用いて簡略化してみましょう。
ちなみに、関数について少しだけおさらい。
<?php //関数の定義 function return_word($data){ //関数の宣言 $dataには渡された値が入っている if($data == 1){ //$dataが1 echo "a"; // aという文字を表示 }else if($data == 2){ echo "b"; }else{ echo "c"; } }//ここで関数終了 $a = 1; $b = 2; $c = $a * $b * $b; return_word($a); //関数return_wordを$aについて実行 echo "<br>"; //改行 return_word($b); //関数return_wordを$bについて実行 echo "<br>"; //改行 return_word($c); //関数return_wordを$cについて実行 ?>
実行結果は先程のプログラムと変わりませんが、プログラムが少し短くなったのが
わかるでしょう。関数(function)を使うことで共通する部分がまとめられています。
関数=functionは宣言(定義)して利用します。
この時、関数名という名前を付けるのですが、どんなことをする関数なのか?が
わかりやすいように名前をつけていきます。今回は return_word としました。
※returnについては次回書いていきます。
関数には引数(ひきすう)と呼ばれるデータを渡すことができます。
前回説明した荷物の郵送を例にすると、郵便番号や荷物の大きさを
引数として渡す、というイメージになります。
ここでは、$dataが引数となります。
引数として渡されたデータは関数内({から}まで)で利用することができます。
具体的には if($data == 1) という形で利用されています。
ここまでは関数の定義について書いてきました。
定義した関数を利用するプログラムの方に注目していきましょう。
return_word($a);
の部分です。実行は「関数名(引数)」という形で行うことができます。
return_word($a);
と書くと、関数return_wordが実行されます、この時、関数側の$data
の値は$aの中身となります。
従って、$data は 1となります。
次に、return_word($b); 実行すると、$dataの値は$bの2となります。
このように引数を渡すことで関数内の実行結果が変化します。
いかがでしょうか。共通する部分がまとめられシンプルになり、
渡された引数によって関数内の結果が変わることがわかると思います。