PHP
引数
PHP基本文法

PHPの基本文法 -関数の引数について-


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);
?>