Search A.I.
Menu
ホーム

メールマガジン ホームページプログラミングテク

Windowsテク
Javaアプレット サンプル
Java Q & A
JavaScript Q & A
Perl Q & A
Perl レッスン
PHP レッスン
PHPテク
MS-DOS コマンド集
UNIX コマンド集
SQL コマンド集
SEの基礎講座
WEBシステム開発受注します
]無料フォームメール送信サービス
リンク集
PHP レッスン

1. PHP の基礎
2. PHPの文法、条件式
3. PHPの文法、条件式 - 続き
4. 配列について
5. ハッシュ配列について
6. 関数について
7. 関数について - 続き
8. 文字列操作関数
9. 配列操作関数
10. ファイル操作
11. ファイル操作 - 続き
12. パラメータの受け渡し
13. クッキーとセッション
14. 総合練習
15. メール送信
16. ファイルアップロード
17. クラスについて
18. クラスについて - 続き
19. MySQL
20. MySQL - 続き(1)
21. MySQL - 続き(2)
22. PostgreSQL
23. 総合練習
24. 総合練習解答



6. 関数について

今日は、関数について詳しくご説明いたします。

■関数とは
毎回同じ処理を実行するのに、いちいち同じ記述を書いていたのでは、面倒ですし、
ファイルサイズも大きくなってしまいます。

そこで、処理が同じ場合は、関数という処理をまとめたものを呼び出すだけで
同じ処理を実行します。

呼び出し側は、関数名の 1 行で済むので、開発が非常に楽になります。

■宣言 & 呼び出し方宣言
関数の定義は次のように行います。

function 関数名() {
処理
}

関数名(); // 呼び出し

上のように関数を宣言しただけでは関数の内容は実行されません。メインの処理が
関数を呼び出すことによって初めて実行されます。

関数に変数を渡すこともできます。これを引数と呼びます。
引数の受け取りについては、後述します。

-----------------------------------------------------------------
function syori_A() {
print "A"; // 関数の定義(この時点では実行されません)
}
function syori_B() {
print "B"; // 関数の定義(この時点では実行されません)
}

syori_B(); // 関数の呼び出し(ここで関数が実行されます)
syori_A(); // 関数の呼び出し(ここで関数が実行されます)
-----------------------------------------------------------------

《 出力 》
BA

■関数の終了、値の戻し
関数の実行後、処理の結果を受け取ることができます。

return

returnは、関数を終了して、戻り値として値を呼び出し側に返すことが
できます。

return 命令は実行された時点で呼び出し側に制御が戻ります。
つまり、関数の途中でも条件で"return"が呼び出されると、関数を
終了して、メインの処理に戻ります。

-----------------------------------------------------------------
print sub_A();

functio sub_A() {
return "Hello World\n";
}
-----------------------------------------------------------------

《 出力 》
Hello World

-----------------------------------------------------------------
sub_A();

function sub_A() {
print "This is";
return;
print "Sample"; // returnで関数の処理が終了してしまったため、実行されない
}
-----------------------------------------------------------------

《 出力 》
This is

戻り値がなければ、returnを省略することができます。

■引数の受け取り
関数に引数を渡し、関数内でそれを使った処理ができます。

function 関数名( 引数1, 引数2, ・・・) {
処理
}

関数名( 引数1, 引数2, ・・・); // 呼び出し

このように、関数に渡したい変数を引数として、いくつでも渡すことができます。

-----------------------------------------------------------------
Sub_A ( "Hello" , "World" , "!!" );

function Sub_A($a, $b, $c) {
print $a . $b . $c; // 引数の受け取り
}
-----------------------------------------------------------------

上のサンプルの場合、1 番目の引数に"Hello"、2 番目の引数に"World"、3 番目の
引数に"!!"を渡しています。

受け取り側では、()内に記述した変数に引数が格納されますので、サンプルのように
すれば、$aに"Hello"、$bに"World"、$cに"!!"が入ります。

■関数内の変数
メインの処理の変数名と同じ変数名を、関数内で使用しても、メインの変数には
影響ありません。

-----------------------------------------------------------------
$a = 100;
test();
print $a;

function test() {
$a = 50; // メイン処理と同じ変数名を使用
}
-----------------------------------------------------------------

《 出力 》
100

メインの変数を使用したい場合は、関数内で、globalで宣言します。

-----------------------------------------------------------------
$a = 100;
test();
print $a;

function test() {
global $a;
$a = 50; // メイン処理と同じ変数名を使用
}
-----------------------------------------------------------------

《 出力 》
50

 

★今日のまとめサンプルプログラム
-----------------------------------------------------------------
<HTML>
<BODY>
<?

sub_A();

$a = 100;
$b = 200;

$c = sub_B($a, $b);
print $c . "<br>";

sub_C();

print "main a = $a<br>"; // 関数内でセットした値は有効にならない (100)
print "main b = $b<br>"; // 関数内でセットした値が有効になる (6)

?>
</BODY>
</HTML>
<?
function sub_A() {
print "This is a test program.<br>";
}

function sub_B($a, $b) {
return $a + $b; // 1番目の引数と2番目の引数の和を返す
}

function sub_C() {
$a = 5; // この関数内のみ有効
global $b;
$b = 6; // この関数内と、この関数内で呼ばれた関数内で有効
}

?>
-----------------------------------------------------------------

■解説
ちょっと分かりにくいかもしれませんが、サンプルを実行して、なぜそういう結果が
表示されるのかを確認してみてください。

他にもいろいろと変更して、どのような結果になるかを試してみてください。

 

★課題
1. 以下の条件を満たす関数を作成してください。

(1) 2つの引数を受け取り、積(掛け算)の結果を返す関数
(2) 3つの引数を受け取り、引数を全てをprintする関数
(3) 引数を1つ受け取り、値が100以上の場合に、"True"の文字列を返す関数
(4) 2つの引数(整数)を受け取り、2つの引数の値が同じ場合に、"True"の
文字列を返し、違う場合は"False"の文字列を返す関数

 

★前回の課題の解答
1. 以下のハッシュ配列

$weekday = array(
1=>'Sunday',
2=>'Monday',
3=>'Tuesday',
4=>'Wednesday',
5=>'Thursday',
6=>'Friday');

の配列を作成してから、
7=>'Saturday'
を追加し、HTML中に全て表示してください。

→下のサンプルを参照してください。

2. 以下のキーとデータをハッシュ配列に格納し、HTML中に全て表示してください。

name : しょう
email : searchai@zw.main.jp
address : 東京都渋谷区
tel : 090-6934-9953

→下のサンプルを参照してください。

-----------------------------------------------------------------
<HTML>
<BODY>
<?

// 1の解答例
$weekday = array(
1=>'Sunday',
2=>'Monday',
3=>'Tuesday',
4=>'Wednesday',
5=>'Thursday',
6=>'Friday');

$weekday['7'] = 'Saturday';

foreach ( $weekday as $key => $value ) {
print "$key : $value <br>\n" ;
}

print "<br>";

// 2の解答例
$data = array("name"=>"しょう",
"email"=>"searchai@zw.main.jp",
"address"=>"東京都渋谷区",
"tel"=>"090-6934-9953" );

foreach ( $data as $key => $value ) {
print "$key : $value<br>";
}

?>
</BODY>
</HTML>
-----------------------------------------------------------------

■解説
ここでは、ハッシュ配列は基本的なところだけ抑えておけばOKです。

データベースを扱う時や、リクエストパラメータ(フォームから送られる情報)を
扱う時などに使用します。

ハッシュ配列のデータを、さらに配列にすることで、簡易的なデータベースとして
扱うことができます。




前の章へ 次の章へ


このエントリーをはてなブックマークに追加


OfficeLance

お問い合わせはこちらから