トップ > php > 

PHP関数(function)の定義と使い方|戻り値から引数の参照渡しまで

PHP関数(function)の定義と使い方|戻り値から引数の参照渡しまで

returnによる戻り値の返し方、引数のデフォルト値設定、値渡しと参照渡し(リファレンス渡し)の仕組みまで、サンプルプログラムで説明します。

関数 目次

  1. 関数 function
    1. 関数 function
    2. return
    3. 引数の参照渡し(リファレンス渡し)
    4. 引数のデフォルト値の設定

関数 function

関数 function

同名の関数を定義した場合、パースエラーが発生する。

パースエラー(構文エラー)は、PHPがコードをパース(構文解釈)する段階で止まってしまうエラーで、多くの場合、間違った構文 ; の付け忘れ、{} () の閉じ忘れなどを記述して発生する。

パースエラーは致命的なエラーで、コンパイルエラーに相当する。パースエラーが発生した場合、プログラムの実行を停止する。

return

return はプログラムの制御を呼び出し元に戻す。 呼び出し側のモジュールでは、呼び出しの次の式から続行する。戻り値として値を設定できる。

function、method で return を呼び出した場合、function、method の処理を終了し、戻り値があれば戻り値を返す。

グローバルスコープで呼び出されると、現在実行中のスクリプトが終了する。

スクリプトが include もしくは require されたものである場合、制御は呼び出し元のファイルに戻る。return に戻り値が設定されている場合、include の戻り値となる 。

<?php
function add($a, $b) {
	$c = $a + $b;
	return $c;	/* 戻り値 $c を返し、function 終了 */
}

$rtn = add(1, 2);
echo $rtn;		/* 3 表示 */
?>
<?php
function who() {
	echo 'hogehoge';
	return;	/* functionを終了。戻り値は返さない。 */
}

$rtn = who();	/* hogehoge 表示 */
?>

引数の参照渡し(リファレンス渡し)

引数の参照渡し(リファレンス渡し)は、定義する関数の引数の前に & を 付加する。

以下の例では、function set_bono(&$var) の &$var は参照渡しの引数になる。

set_bono($name) で、set_bono(&$var) の &$var は $name の参照渡し(リファレンス渡し)となる。

$name は 'hogehoge' が代入されているが、set_bono 関数の $var = 'bonobono'; で $name の内容は 'bonobono' に書き換わる。

引数の参照渡し(リファレンス渡し)は、変数の参照(リファレンス)と同様の仕組みで、$name と $var は同じメモリ領域を指し示すようになる(エイリアス、別名)。

<?php
function set_bono(&$var) {
	$var = 'bonobono';
}

$name = 'hogehoge';
echo $name;	/* hogehoge 表示 */

set_bono($name);
echo $name;	/* bonobono 表示 */
?>

引数のデフォルト値の設定

関数は引数に、引数 = デフォルト値 の書式で、デフォルト値を設定できる。

デフォルト値は、呼び出し元のパラメーターに引数が指定されなかった場合に使われる。ただし、null を渡した場合はデフォルト値を代入しないので、注意が必要。

以下の例では、function set_bono($var = 'bonobono') の引数、$var に デフォルト値 'bonobono' を設定している。

<?php
function set_bono($var = 'bonobono') {
	return $var . 'はラッコ' ;
}

echo set_bono();		/* bonobonoはラッコ 表示 */
echo set_bono('hogehoge');	/* hogehogeはラッコ 表示 */
echo set_bono(null);		/* はラッコ 表示 */
?>

おすすめ記事

10日で使えるPHP | 未経験のサルでも分かるPHPの学習サイト 10日で使えるPHP | 未経験のサルでも分かるPHPの学習サイト

文系未経験、サルでも10日でPHPを使えるように内容を構成した独学向け学習サイト。不要な基礎はバッサリ切り捨て必要な基礎を十分に深堀した・・・  続きを見る 

Copyright (C) 2001~2026年 e-elder.jp All Rights Reserved.
運営者情報 ご質問はこちらへお願いします info@e-elder.jp