これまでに定義した関数の引数は1つだけでした。
関数には2つ以上の引数を持たせることもできます、
サンプルコードの実行結果はこちら
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<!doctype html> <html> <head> <meta charset="utf-8"> <title></title> <link rel="stylesheet" href="../style.css"> </head> <body> <?php $food = "りんご"; $price =100; //2つの引数を渡す buy($food,$price); orei(); function buy($fo,$pr){ echo "<hr><br>"; //第1引数、第2引数の値を出力する echo "{$fo}を{$pr}円で買います。<br>"; } function orei($msg="thank you"){ echo $msg . "<br>"; } ?> </body> </html> |
複数の引数をもつ関数も、これまでのものと基本は同じです。
呼びだす時にふくすうの引数をカンマで区切って指定しなければいけません。
ふくすうの引数を引数リストといったりもします、カンマで区切った順で、
実引数の値が仮引数に渡されます。下記のように渡されます。
実引数 $food → 仮引数 $fo
実引数 $price → 仮引数 $pr
関数には複数の引数を渡すことができる。
引数がない関数
関数の中には、以前紹介したmsg()のように引数がない関数と
いうものがあり、引数のない関数を定義するには、
()の中に何も書きません。
function msg(){
echo "お買い上げありがとうございます。";
}
上記のように引数がない関数を呼びだす時は、()に値は指定しません。
デフォルト引数
引数を定義するとき、デフォルト引数(default argument)というものを
指定することができます。
デフォルト引数を指定すると、関数呼びだす際に、実引数を省くことができ、
実引数を省いたときに、デフォルト引数としてj指定した値を使用できます。
サンプルコード27行目の$msgに「thank you」という値を代入します。
このとき、サンプルコード18行目でorei()と書いて引数を省いて、
呼びだすと、$msgに「thank you」と代入されます。
注意点があって、関数の引数が複数の場合には、
デフォルト引数の指定方法にはルールがあります。
・その引数以降にある引数も
全てデフォルト引数を設定しなければならない
というルールがあります。
function func1($a,$b,$c=2,$d,$e=5){・・・}という関数はエラーです。
function func1($a,$b,$c,$d=2,$e=5){・・・}という関数は正しいです。
上記の正しい関数を例にとると、以下のように関数を呼びだすことは可能です。
//2つの引数を省略
func1(10,20,30);
//1つの引数を省略
func1(10,20,30,40);
//全ての引数を指定して呼び出す
func1(10,20,30,50);