PHPでは、これまで覚えてきたPHPの独自の関数とは別に、プログラムの作成者自身が作ることができる関数があります。その関数がユーザ定義関数です。
ユーザ定義関数を作っておくと、PHP独自の関数と同様に必要な場所で必要なだけ、その関数を呼び出して実行したい処理を行うことができます。
また、そのユーザ定義関数の処理に変更があったときは、呼び出し元が何か所あっても関数内だけ変更すればよく、管理や運用がとても楽になります。
「ユーザ定義関数」に対して、PHPであらかじめ用意されている関数は「組み込み関数」と呼ぶことがあります。
PHPとJavaScriptのユーザ定義関数の作り方は同じです。
function 関数名([引数1][,引数2][引数3...]){ ここに処理を書きます }
function 関数名(){ ここに処理を書きます }
function 関数名(){ ここに処理を書きます return 戻り値; }
関数の定義する場所は、関数の処理場所とは無関係
<?php header("Content-type: text/html; charset=utf-8"); myoutput("aaa"); function myoutput($moji){ echo $moji; } myoutput("bbb"); ?>
aaabbb
<!DOCTYPE HTML> <html lang="ja-JP"> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> myoutput("aaa"); function myoutput(moji){ console.log(moji); } myoutput("bbb"); </script> </head> <body> </body> </html>
aaa
bbb
<?php header("Content-type: text/html; charset=utf-8"); function mykeisan($suji){ if(is_numeric($suji)){ $suji += 10; $suji *=5; $suji /= 3; return $suji; } else{ return "数値ではありません!"; } } //戻り値を変数に代入することも可能 $value = mykeisan(100); ?>
出力なし
<?php header("Content-type: text/html; charset=utf-8"); function mykeisan($suji){ if(is_numeric($suji)){ $suji += 10; $suji *=5; $suji /= 3; return $suji; } else{ return "数値ではありません!"; } } echo "<br>1=>" . mykeisan(1); echo "<br>2=>" . mykeisan(2); echo "<br>3=>" . mykeisan(3); echo "<br>4=>" . mykeisan(4); echo "<br>a=>" . mykeisan("a"); ?>
1=>18.333333333333
2=>20
3=>21.666666666667
4=>23.333333333333
a=>数値ではありません!
<!DOCTYPE HTML> <html lang="ja-JP"> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> function mykeisan(suji){ if(!isNaN(suji)){ suji += 10; suji *=5; suji /= 3; return suji; } else{ return "数値ではありません!"; } } var value = mykeisan(100); </script> </head> <body> </body> </html>
出力なし
<!DOCTYPE HTML> <html lang="ja-JP"> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> function mykeisan(suji){ if(!isNaN(suji)){ suji += 10; suji *=5; suji /= 3; return suji; } else{ return "数値ではありません!"; } } console.log("\n1=>" + mykeisan(1)); console.log("\n2=>" + mykeisan(2)); console.log("\n3=>" + mykeisan(3)); console.log("\n4=>" + mykeisan(4)); console.log("\na=>" + mykeisan("a")); </script> </head> <body> </body> </html>
1=>18.333333333333
2=>20
3=>21.666666666667
4=>23.333333333333
a=>数値ではありません!