Codeworks Notes

 2020-12-29

 2021-12-15

PHP
PHP応用

関数のつくりかた

まとまった処理を行って値を返すものを「関数」といいます。
date(); や count(); のように元々 PHP に備わっている「組み込み関数」もありますが、自分で作ることもできるので複雑なものを何度も書く、というのが減らせて良いかと思います。

書きかた

基本書式はこれです

function 関数名() { 処理内容 }

記述例

Hello, world! を出力するベタなやつを見てみましょう。

// 関数の定義
function hello() {
	echo 'Hello, world!';
}

// 関数の出力
hello();

出力結果

Hello, world!

引数を含む書式

関数名() のカッコの中に引数を入れることもできます。

function 関数名($引数) { 処理内容 }

記述例

たとえば10%の税金を加える関数を作るとします。

// 関数の定義
function taxIncludedPrice($price) {
	echo floor($price * 1.1);
}

// 関数の出力
taxIncludedPrice(1200);

出力結果

1320

echo しないで戻り値にする

さっきの税込額をechoするやつは、echoしたら終わりで、別にそれを累計したりという二次活用が全くできないので、再利用した方がいい出力結果は積極的に return しましょう。

記述例

さっきの 10% の税金を加える関数をちょっと変えます。

// 関数の定義
function getTaxIncludedPrice($price) {
	return floor($price * 1.1);	// echo => return に変更
}

// 関数の出力
echo getTaxIncludedPrice(1200); // ここで echo を使う

出力結果

1320

複数の引数を含む書式

引数はカンマ「 , 」を加えることでいくつでも指定できます。

function 関数名($引数1,$引数2,$引数3,...) { 処理内容 }

記述例

引数を複数使いたいので、とりあえず借りたお金と返す期間を入れたら毎月の返済額を出してくれる関数を作るとします。

// 関数の定義
function repayPlan($principal,$yearRate,$repayMonth) {
	$interest = floor(( $principal * ( $yearRate / 100 ) / 365 ) * ( 30 * $repayMonth ));
	$amounts = $principal + $interest;
	$monthAmount =  floor(($amounts / $repayMonth / 100 )) * 100; 
	$firstMonthAmount = $amounts - ($monthAmount * ($repayMonth - 1));

	echo '借入総額:' . $principal . '円<br />';
	echo '返済期間:' . $repayMonth . 'か月' . '<br />';
	echo '法定利息:' . $interest . '円 (年率' . $yearRate . '%)' . '<br />';
	echo '初月返済額:' . $firstMonthAmount . '円' . '<br />';
	echo '2か月目以降の返済額:' . $monthAmount . '円';
}

// 条件の指定
$principal = 150000;
$yearRate = 14.4;
$repayMonth = 6;

// 関数の実行
repayPlan($principal,$yearRate,$repayMonth);

出力結果

借入総額:150000円
返済期間:6か月
法定利息:10652円 (年率14.4%)
初月返済額:27152円
2か月目以降の返済額:26700円

<input> タグで金額入れさせたら自動計算フォームになる。

ポイントは、何度も使いそうな処理は最初に関数化しておくと、関数をコールするだけで 1 行で色々やってくれる、ってとこです。