PHP ユーザー定義関数
これ、理由もなく超苦手意識満開。勉強がんばる。
ユーザー定義関数とは
読んで字のごとく、自分で定義できる関数。元々PHPに用意されてる関数とかその他の処理を1つのまとまりにしてそれを関数にしちゃえるというもの。ユーザー定義関数の中ではPHPで有効なコードなら何でも書いて大丈夫。(関数とかクラスとか)
ユーザー定義関数の使い方
関数を定義するのは「function」。書き方はこんな感じ。
function 自分で決めた関数名 (引数、引数なかったら括弧だけ){
処理内容;
}
ユーザー定義関数の決まり事など
- 関数に付けられる名前は変数の規則と同じ(英数字とアンダーバーのみ)。
- 大文字小文字の区別はなし。だけど関数宣言時と同じ名前で関数をコールする方が好ましい。
- functionの後には必ず半角スペースを入れる。
- 引数があってもなくても括弧( )は絶対に付ける。
- 一度定義した関数は取り消したり再定義したりできない。
- 書く場所はその関数が参照される前でも後でもいい(PHP3は参照する前にないとダメだった)。
- if文で条件指定した中に関数定義を入れる場合は、特定条件下のみ関数が定義される事になるので条件式が評価されるまで参照できない。
関数の返り値(戻り値/返し値)というもの
関数でいろいろ処理してもらった後、その処理後の値が欲しい時に「return」を使って求める事ができる。その値のことを返り値(戻り値/返し値)と呼ぶ。
function hello($name){
return("<p>こんにちわ" . $name . "さん</p>");
}
echo hello(red_hippy);
//ブラウザには こんにちわred_hippyさん と表示される。
//ソースは <p>こんにちわ、red_hippyさん</p>
この「<p>こんにちわ、red_hippyさん</p>」が返り値ってこと。
「return」には値を返すという機能のほかに、スクリプトの実行を中止するという機能もある。なので、returnは処理の最後に書かないと途中で処理が終わっちゃうとのこと。試してみる。
returnでスクリプトの実行中止テスト
//returnの前にecho入れてみる
function hello($name){
echo "<p>はじめまして。</p>";
return("<p>こんにちわ" . $name . "さん</p>");
}
echo hello(red_hippy);
//はじめまして と こんにちわred_hippyさん 両方表示される。
//returnの後にecho入れてみる
function hello($name){
return("<p>こんにちわ" . $name . "さん</p>");
echo "<p>はじめまして。</p>";
}
echo hello(red_hippy);
//こんにちわred_hippyさんと表示される。
//はじめましては表示されない。
返り値の決まり事など
- 引数を関数に値を渡す事を「値渡し」と呼ぶ。
- 引数には数値、変数、配列などを指定することができる。
- 引数はカンマ区切りで複数指定も可能。
- 引数を複数指定した場合は、その複数分の値を渡してやる。
- 関数に渡された引数を変更しても、影響を受けるのは関数の中だけ。変数をの値自体は関数の中では変化するけど、外では変化なし。
- 引数にはデフォルト値を指定することができる。デフォの時の処理とこの場合はこう、みたいな処理をする時に便利。
- デフォルト値を使う時は引数のパラメータに「=」を利用して値を設定する。
- 引数を関数内で処理させている関数では参照時に引数を指定しないとエラーが出る。デフォルト値が入ってたら問題ない。
- 引数が複数の時にデフォルト値を設定する際は、デフォルト値の指定がない引数をデフォルト引数の後ろにおく事はできない。
- 変数を渡したとき、関数の外でも値を変化させるには引数に「&」をつけて「参照渡し(リファレンス渡し)」を使う。
参照渡しのサンプル
function foo(&$num){
$num++;
return;
}
$a = 5;
echo "fooに値を渡す前" . $a . "<br />";
//fooに値を渡す前5 と表示される。
foo($a);
echo "fooに値を渡した後" . $a;
//fooに値を渡した後6 と表示される。
その他もろもろ覚書
- 処理手順をまとめた小さなプログラムを作る事を「サブルーチン」と呼ぶ。必要な時に随時呼び出す。ルーチンワークとかよく聞くな。あれは毎日決められた事を繰り返し作業すること。あぁ、なんか意味わかった。
- functionとかreturnの事を「ステートメント」と呼ぶらしい。
参考にしたサイト
<< 全角数字⇔半角数字・全角カナ⇔半角カナ変換 | 正規表現 勉強メモ >>
トラックバック
このエントリーのトラックバックURL:
http://redline.hippy.jp/cgi/mt/mt-tb.cgi/218