Pages

Subscribe:

2011-11-09

PHPの基礎~関数(ユーザ定義関数)その2

前回からの続きです。
今回は関数を定義する方法を実践してみたいと思います。

関数を定義するといっても、慣れないうちは最初から関数を作るのは
難しいと思うので、もともとあるプログラムを関数化してみます。


プログラムの関数化

今回はふたつの数字を計算させる短いプログラムをあえて関数化します。
まずは関数化させたいプログラムをつくります。
関数化したときに関数を使う意味が分かりやすいように、
違う変数を使い、同じ処理を行う計算式をふたつ分作ります。
<?php
$a = 5;
$b = 8;
$c = 3;
$d = 7;

$ans1 = $a + $b;
$ans2 = $c + $d;

echo $ans1.'<br>';
echo $ans2;
?>
表示は以下のようになっています。

このプログラムのうち、処理が重なっている部分を関数にします。
関数にするのはこの部分です。
$ans1 = $a + $b;
$ans2 = $c + $d;

関数を作る

まずは関数を定義するための「function」を書き、
関数の名前を決めます。ふたつの数字を計算させる関数なので、
「plusTwoNumbers」という名前をつけます。
続くカッコの中には関数の中の処理を行わせるために必要な値、引数を
定義します。
ここではふたつの数字を計算させるために、数字が2種類必要なので、
引数はふたつになります。
それぞれ計算させる処理の変数と対応させるため「$one」、「$two」と記述
します。

関数の中身はもちろん計算式になるのですが、
計算結果が必要なので、答えの部分に「return」をつけ、値を戻すようにします。
以下実際に書いてみたものです。
function plusTwoNumbers($one,$two){
    $ans = $one + $two;
    return $ans;
}
関数を作ることができました。

定義した関数を使ってみる

関数を作ることができたので使ってみます。
最初のプログラムの関数化しなかった部分で作った関数を呼び出します。

関数は関数名と引数を入れるカッコで呼び出すことができます。
引数があってもなくてもカッコは必要です。
関数に引数が定義されている場合は、
その関数を使うときに渡す引数の数があっていないと動きません。

今回は計算をさせる数字ふたつを関数に引渡したいので、
最初に定義した4つの変数のうちふたつを引数としてカッコの中に書きます。
plusTwoNumbers($a,$b);
これで計算はできています。
あとはこれを最初に作ったプログラムの両方に当てはめれば完成です。
以下、実際に書いてみたものです。
<?php
function plusTwoNumbers($one,$two){
    $ans = $one + $two;
    return $ans;
}

$a = 5;
$b = 8;
$c = 3;
$d = 7;

$ans1 = plusTwoNumbers($a,$b);
$ans2 = plusTwoNumbers($c,$d);

echo $ans1.'<br>';
echo $ans2;
?>
表示は変わらないので割愛しますが、
一度関数を作ると受け渡す引数を変えれば何度でもその関数を呼び出して
使うことができるということが分かるかと思います。


関数はそれひとつが独立したプログラムとなり、
閉じられた関数内で使われているものと同じ名前の変数を
関数の外で定義しても別物と判断されます。
これが関数の理解をややこしくする原因ではないかと思います。

この例では「$one」「$two」という引数を定義して計算式に使用しましたが、
それを元のプログラム部分と同じ「$a」「$b」に変えても動作に問題はありません。
ただ少し分かりにくくなるかも…

新しい言葉やその使い方が一気に増えて関数は難しいイメージが
付きまといます。
短いプログラムを関数化すると、余計に長くなってしまい
便利さがいまひとつ分からないかも知れませんが、
今後関数をさらにひとまとめにした、クラスというものも登場したりするので
少しずつでも慣れておくと新しいことも理解しやすくなると思います。

0 件のコメント:

コメントを投稿