戻る

ユーザ定義関数の作り方

ユーザ定義関数とは

PHPでは、これまで覚えてきたPHPの独自の関数とは別に、プログラムの作成者自身が作ることができる関数があります。その関数がユーザ定義関数です。

ユーザ定義関数を作っておくと、PHP独自の関数と同様に必要な場所で必要なだけ、その関数を呼び出して実行したい処理を行うことができます。

また、そのユーザ定義関数の処理に変更があったときは、呼び出し元が何か所あっても関数内だけ変更すればよく、管理や運用がとても楽になります。

組み込み関数

「ユーザ定義関数」に対して、PHPであらかじめ用意されている関数は「組み込み関数」と呼ぶことがあります。

PHPとJavaScript

PHPとJavaScriptのユーザ定義関数の作り方は同じです。

ユーザ定義関数の作成

function 関数名([引数1][,引数2][引数3...]){
	ここに処理を書きます
}

引数を持たないユーザ定義関数の作成

function 関数名(){
	ここに処理を書きます
}

戻り値指定のユーザ定義関数

function 関数名(){
	ここに処理を書きます
	return 戻り値;
}

ユーザ定義関数の呼び出し

関数の定義する場所は、関数の処理場所とは無関係

PHP

<?php
header("Content-type: text/html; charset=utf-8");

myoutput("aaa");

function myoutput($moji){
	echo $moji;
}

myoutput("bbb");
?>

aaabbb

JavaScript

<!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

<?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=>数値ではありません!

JavaScript

<!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=>数値ではありません!

inserted by FC2 system