returnによる戻り値の返し方、引数のデフォルト値設定、値渡しと参照渡し(リファレンス渡し)の仕組みまで、サンプルプログラムで説明します。
同名の関数を定義した場合、パースエラーが発生する。
パースエラー(構文エラー)は、PHPがコードをパース(構文解釈)する段階で止まってしまうエラーで、多くの場合、間違った構文 ; の付け忘れ、{} () の閉じ忘れなどを記述して発生する。
パースエラーは致命的なエラーで、コンパイルエラーに相当する。パースエラーが発生した場合、プログラムの実行を停止する。
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を使えるように内容を構成した独学向け学習サイト。不要な基礎はバッサリ切り捨て必要な基礎を十分に深堀した・・・ 続きを見る |