PHPの基本文法 -関数の引数について-
PHPの関数について、整理してみました。
関数とは
変数は値を入れておく箱でしたが、関数は幾つかの処理をまとめて入れておくものです。
関数には、最初から用意されている「組み込み関数」と、自分で定義する「ユーザ定義関数」があります。
「組み込み関数」とは、プログラミング言語などの仕様にあらかじめ用意され、標準で使用できる関数のことを言います。
例えば、isset()
、isNull()
、empty()
, var_dump()
などがそれに当たります。
逆に「ユーザー定義関数」とは、ユーザーが作成した関数のことを言います。
例えば、
<?php
function func()
{
echo "Test";
}
func();
?>
引数について
引数は、関数を呼び出すときに渡す値です。
関数の中では、その値を使用して処理を行い、必要に応じて結果を返します。
PHPの関数は引数のリストにより、関数へ情報を渡すことができる。
このリストは、「,](カンマ)で区切られた式のリストです。
引数の評価は、左から右の順番で行われます。
「値渡し」と「参照渡し」について
引数には、「値渡し」と「参照渡し」があります。
「値渡し」は、変数のコピーを渡す方法で、関数側で変数の内容を変更しても、元の変数には影響しない。
「参照渡し」は、変数への参照を渡す方法で、関数側で変数の内容を変更すると、呼び出し側の変数も同様に変更される。
//引数「string」を「参照渡し」する関数
function add_str(&$string)
{
$string = 'Hello ' . $string;
}
$str = 'World';
add_str($str);
echo $str; //Hello Worldが出力される
デフォルト引数値
デフォルト引数値は、引数の既定値です。デフォルト引数値を指定するには、関数の定義において、代入演算子の「=」を使用して、引数にデフォルト値を指定する。PHPでは、配列やNULLをデフォルト値にすることもできる。
function hello($str = "world")
{
return "Hello $str! <br/>";
}
echo hello(); //Hello world
echo hello(null); //Hello !
echo hello("Tom"); //Hello Tom!
デフォルト引数値を使用する時の注意点
デフォルト引数値は、定数式である必要がある。変数やクラスのメンバーは指定することができない。
またデフォルト引数値を有する引数は、デフォルト引数値がない引数の右側に全てある必要がある。
//間違った例
function greet1($str = "Hello", $name)
{
return "$str $name ! <br/>";
}
//第2引数を省略して関数をコールすることはできない
echo greet1("Tom");
//正しい用例
function green2($name, $str="Hello")
{
return "$str $name! <br/>";
}
//第2引数を省略して関数をコールすることができる
echo greet2("Tom");
可変長引数リスト
可変長引数リストは、引数の数が変わる関数を定義するためにサポートされている機能です。
可変長引数リストと使用するには、「func_num_args」関数と「func_get_args」関数を使用する。
サンプル↓
<?php
function avg()
{
$sum = 0;
for($i = 0; $i < func_num_args(); $i++){
$sum += func_get_arg($i);
}
$avg = $sum / func_num_args();
var_dump($avg);
return $avg;
}
echo avg(2,1,2,1,3,4,5,3,6);
?>