2015年10月28日

PHP はじめての関数 その2

«
»

Pocket

前回は関数とは何か?をイメージを用いて説明しました。
今回は具体的なプログラムを用いて関数を説明したいと思います。
さっそくサンプルプログラムをみてみましょう。
 


<?php

$a = 1;
$b = 2;
$c = $a * $b * $b; // $c = 1*2*2 = 4となる

if($a == 1){ //$aが1ならaと表示
	echo "a";
}else if($a == 2){ //$aが2ならbと表示
	echo "b";
}else{ //$aが1,2以外ならcと表示
	echo "c";
}

echo "<br>"; //改行

if($b == 1){ //今度は$bについて同じことを行う
	echo "a";
}else if($b == 2){
	echo "b";
}else{
	echo "c";
}

echo "<br>"; //改行

if($c == 1){ //最後は$cについて同じことを行う
	echo "a";
}else if($c == 2){
	echo "b";
}else{
	echo "c";
}

?>

実行結果

PHP 関数 具体例

解説

少し長いですが、ちゃんと読むと大したことはしていません。
変数の中身によってif文を用いて表示する文字を変えているだけです。
 
それを$a,$b,$cに対して3回行っています。
なので、プログラムとしては重複している部分が多いと思います。
もっと言えば、if($a == 1) というプログラムの$aの部分が$b,$cに置き換わるだけです。
 
php プログラム ムダ
なんか、冗長(≒ダラダラと長い)気がしませんか?無駄が多いなぁと。
 
そんな風に面倒くさがり屋の方はプログラマーに向いているかもしれません。
関数はこの冗長さを解消することができます。
上のプログラムを関数を用いて簡略化してみましょう。
ちなみに、関数について少しだけおさらい。
 
スクリーンショット 2015-10-27 5.57.37

関数を用いたサンプルプログラム


<?php

//関数の定義
function return_word($data){ //関数の宣言 $dataには渡された値が入っている
	if($data == 1){ //$dataが1
		echo "a"; // aという文字を表示
	}else if($data == 2){ 
		echo "b";
	}else{ 
		echo "c";
	}	
}//ここで関数終了

$a = 1;
$b = 2;
$c = $a * $b * $b; 

return_word($a); //関数return_wordを$aについて実行

echo "<br>"; //改行

return_word($b); //関数return_wordを$bについて実行

echo "<br>"; //改行

return_word($c); //関数return_wordを$cについて実行

?>


実行結果

php 関数 function

解説

実行結果は先程のプログラムと変わりませんが、プログラムが少し短くなったのが
わかるでしょう。関数(function)を使うことで共通する部分がまとめられています
 
スクリーンショット 2015-10-28 6.31.54
 
関数=functionは宣言(定義)して利用します。
この時、関数名という名前を付けるのですが、どんなことをする関数なのか?が
わかりやすいよう
に名前をつけていきます。今回は return_word としました。
※returnについては次回書いていきます。
 
関数には引数(ひきすう)と呼ばれるデータを渡すことができます
前回説明した荷物の郵送を例にすると、郵便番号や荷物の大きさを
引数として渡す、というイメージ
になります。
 
ここでは、$dataが引数となります。
引数として渡されたデータは関数内({から}まで)で利用することができます
具体的には if($data == 1) という形で利用されています。
 
ここまでは関数の定義について書いてきました。

関数の実行

スクリーンショット 2015-10-28 7.46.25
 
定義した関数を利用するプログラムの方に注目していきましょう。
return_word($a);
の部分です。実行は「関数名(引数)」という形で行うことができます
 
return_word($a);
と書くと、関数return_wordが実行されます、この時、関数側の$data
の値は$aの中身となります。
 
従って、$data は 1となります。
次に、return_word($b); 実行すると、$dataの値は$bの2となります。
このように引数を渡すことで関数内の実行結果が変化します
 
いかがでしょうか。共通する部分がまとめられシンプルになり、
渡された引数によって関数内の結果が変わることがわかると思います。

まとめ

・関数はfunctionとして宣言(定義)する
・関数には引数(ひきすう)と呼ばれるデータを渡すことができる
・関数の実行は「関数名(引数となるデータ)」で行える

【関連する記事】