関数
標準関数
PHPには、標準関数が非常にたくさん準備されています。
詳しくは「日本PHPユーザー会」のオンライン・ドキュメントを参照してください。
ここでは、使用頻度が特に高い関数のみ紹介しています。
| 関数名 |
動作 |
| exit |
プログラムの実行を終了します。
|
| htmlspecialchars |
「<」「>」「&」「"」が特殊文字に変換されます。
echoで出力する時、出力する文字列の中にこれらの文字があるとHTMLタグとの関係でうまく動作しません。
この関数の結果を使用すると正常に動作するようになります。
|
| sprintf |
変数をフォーマットします。 「sprintf(%04d", 12);」の実行結果は「0012」となります。
|
| number_format |
数値をカンマ編集します。 「number_format(12345);」の実行結果は「12,345」となります。
|
| explode |
文字列を特定の文字列で分割して配列に入れます。
$a = explode(",", "123,456,ABCD,PHP");
これを実行すると$aは以下のようになります。
$a[0] = "123";
$a[1] = "456";
$a[2] = "ABCD";
$a[3] = "PHP";
|
| count |
配列の要素数を返します。
$a[0] = "123";
$a[1] = "456";
$a[2] = "ABCD";
$a[3] = "PHP";
この時、count($a)は4を返します。
|
| substr |
文字列の一部を取得します。
substr("123456789", 4) は "56789"を返します
substr("123456789", 4, 2) は "56"を返します
|
| mb_substr |
substrの漢字対応版です。漢字が含まれるときはこちらを利用してください。
|
| header |
HTTPプロトコルのヘッダーを出力します。
よく使うパターンは、他のページへリダイレクト(ジャンプ)させる時です。
header('Location: php.html');
この場合、これが書かれたところまで実行するとphp.htmlに強制的にジャンプします。
これ以外にもHTTPヘッダーに出力する場合、すべてこの関数を使います。
|
ユーザー定義関数
関数はユーザーが独自に作ることもできます。
function() { }で関数を定義します。
関数の呼び出しは以下のプログラムのように関数名を書きます。標準関数のようにパラメータを渡すこともできます。
関数は値を返すことができます。以下の例のようにreturn文で値を返します。
ユーザー定義関数の例1
<html>
<body>
<?php
// 受け取った値を2倍にして返します。
function Bai($num) {
return ($num * 2);
}
/////// ここからメイン・ルーチン ///////
for ($i = 1; $i <= 5; $i++)
echo "<p>" . Bai($i) . "</p>\n";
?>
</body>
</html>
|
実行結果のHTMLは以下のようになるはずですね。
<html>
<body>
<p>2</p>
<p>4</p>
<p>6</p>
<p>8</p>
<p>10</p>
</body>
</html>
|
ユーザー定義関数の例2
以下のプログラムは事前に準備してある「魚の種類データ」を検索して、その中に該当するかどうかをチェックするプログラムです。
データ定義用に2つのファイルに分けて作ってあります。
fish_data.php
<?php
$fish[0] = 'クロダイ';
$fish[1] = 'ブラックバス';
$fish[2] = 'アイナメ';
$fish[3] = 'メバル';
$fish[4] = 'マダイ';
$fish[5] = 'メジナ';
$fish[6] = 'イシダイ';
?>
|
main.php
<html>
<body>
<?php
require('fish_data.php'); // 魚データの読込み
/////////////////////////////////////////////////////
// FishSearch()関数
// 魚データの中に該当する魚があるかをチェックします。
// もしも、魚データに定義されていたら1を返す。
// 定義されていなければ0を返す。
//
function FishSearch($fish_name) {
// グローバル変数$fishを定義しています。
// この関数内部で$fishを参照すると、
// グローバル変数の配列$fishを参照するようになります。
global $fish;
for ($i = 0; $i < count($fish); $i++) {
if ($fish[$i] == $fish_name)
return 1;
}
return 0;
}
/////// ここからメイン・ルーチン ///////
$str = 'メバル';
if (FishSearch($str) == 1)
echo "<p>$strは魚です。</p>\n";
else
echo "<p>$strは魚ではありません。</p>\n";
$str = 'アイナメ';
if (FishSearch($str) == 1)
echo "<p>$strは魚です。</p>\n";
else
echo "<p>$strは魚ではありません。</p>\n";
$str = 'パソコン';
if (FishSearch($str) == 1)
echo "<p>$strは魚です。</p>\n";
else
echo "<p>$strは魚ではありません。</p>\n";
?>
</body>
</html>
|
実行結果のHTMLは以下のようになるはずですね。
<html>
<body>
<p>メバルは魚です。</p>
<p>アイナメは魚です。</p>
<p>パソコンは魚ではありません。</p>
</body>
</html>
|
ここで、グローバル変数とローカル変数の説明をします。
| グローバル変数 |
プログラム全体で同じ値をもつ変数。
プログラムの一番上で $a = 1; と書けば、$a に新しい値を代入しない限り、プログラムの最後でも $a は1です。
途中で消えてなくなったりしません。
|
| ローカル変数 |
関数内部だけ有効な変数。
上記の例でFishSearch関数の中で使われている「 $i 」はローカル変数です。
FishSearch関数から出ると「 $i 」は消滅します。
プログラムの最後では $i が存在しません。
|
上記を見るとC言語に非常に良く似ているのがわかります。
しかし、注意点として、関数内ではすべてローカル変数になります。関数内でグローバル変数を使う時には
「global」と定義する必要があります。これを忘れると、その変数はローカル変数として処理されてしまいます。
このことから、この例のFishSearch関数の中で使われている「 $i 」はローカル変数です。「 $fish 」はグローバル変数です。
$GLOBALS
いままで説明してきたように、関数内部ではglobal宣言をしない限り、ローカル変数として処理されます。
例外として、$GLOBALSという特殊変数が存在します。この変数はすべてのグローバル変数を配列にしたものです。
簡単な例で見てみましょう。
<html>
<body>
<?php
// 受け取った値を2倍にして返します。
function Bai() {
return ($GLOBALS['i'] * 2);
}
/////// ここからメイン・ルーチン ///////
for ($i = 1; $i <= 5; $i++)
echo "<p>" . Bai() . "</p>\n";
?>
</body>
</html>
|
上記のプログラムでは、Bai関数にglobal宣言されていない変数 $i を使っています。$GLOBALSによって強制的にグローバル変数にアクセスしています。
戻る
|