PHPには初めからたくさんの関数が用意されていますが、ユーザが関数を定義することもできます。
そのような関数を「ユーザー定義関数」と言います。
ここでは、簡略して「関数」と呼ぶことにします。
関数の使い方
関数とは「処理をまとめた箱」と思ってください。
例えば、$goodsという変数に「りんご」という文字列を入れて、それを新商品としてフレーズを付けて出力するために以下のように記述したとします。
$goods ='りんご';
print '新商品「'. $goods .'」を入荷しました!<br>';
これらの処理を関数としてまとめることができます。
関数にするには、はじめに「関数の定義」をする必要があります。
関数の定義
関数を使うには、最初に「関数の定義」が必要です。
関数の定義の仕方は、以下のようにfunctionを書いて、その後に関数名を書きます。
function 関数名(){
実行される処理1;
実行される処理2;
}
先ほどの処理を関数としてまとめた場合、以下のようになります。
function newgoods(){
$goods ='りんご';
print '新商品「'. $goods .'」を入荷しました!<br>';
}
関数の呼び出し
ただ、関数を定義しただけでは関数は機能しません。
関数を機能させるためには、「関数の呼び出し」が必要になります。
function 関数名(){
実行される処理1;
実行される処理2;
}
関数名();
例えば、先ほど定義した関数を呼び出すには、以下のように記述します。
function newgoods(){
$goods ='りんご';
print '新商品「'. $goods .'」を入荷しました!<br>';
}
newgoods();
関数の呼び出しの位置は前でも実行されます。
newgoods();
function newgoods(){
$goods ='りんご';
print '新商品「'. $goods .'」を入荷しました!<br>';
}
引数を使って関数に値を渡す
これまでの例だと、ただ処理をまとめものを関数として呼び出しているだけになっています。
しかし、ただ処理をまとめただけなら、わざわざ関数を使う必要ななく、ただ処理を羅列していけばいいはずです。
値の「入力」と「出力」ができるようになれば、もっと関数を有効活用できるはずです。
ここで関数に渡す値のことを「引数」、関数から結果として帰ってくる値のことを「戻り値」と言います。
例えば、関数にAという値を入れたなら、結果としてBという値が返ってくるといった感じで関数が使えれば便利です。
function 関数名(引数){
//引数を使った処理
}
関数名(値);
例えば、「りんご」を引数として関数に渡したとするならば、以下のようにします。
function newgoods($goods){
print '新商品「'. $goods .'」を入荷しました!<br>';
}
newgoods('りんご');
結果は『新商品「りんご」を入荷しました!』が出力されます。
引数を「メロン」にした場合は、カッコの中身が「メロン」になって帰ってきます。
複数の引数
引数は1つだけではなく、2二つ以上指定することができます。
function 関数名(引数1, 引数2, ...){
//引数を使った処理
}
関数名(値1, 値2, …);
例えば、関数に商品名と価格を引数とした場合、以下のように記述します。
function newgoods($goods, $price){
print '新商品「'. $goods .'」を入荷しました!<br>';
print '価格は'.$price.'円です。<br><br>';
}
newgoods('りんご',540);
さらに、割引率を入れた場合は以下のようになります。
function newgoods($goods, $price, $discount){
print '新商品「'. $goods .'」を入荷しました!<br>';
print '価格は'.$price.'円のところ、なんと'.$price * (1 - $discount).'円で販売中です!<br><br>';
}
newgoods('りんご', 540, 0.2);
関数を使えば、以下のように引数を指定するだけで、同じ処理を何度も書かなくてもいいので便利ですね。
function newgoods($goods, $price, $discount){
print '新商品「'. $goods .'」を入荷しました!<br>';
print '価格は'.$price.'円のところ、なんと'.$price * (1 - $discount).'円で販売中です!<br><br>';
}
newgoods('りんご', 540, 0.2);
newgoods('みかん', 240, 0.3);
newgoods('いちご', 480, 0.1);
newgoods('メロン', 280, 0.5);
newgoods('ぶどう', 140, 0.1);
コピーできました!