関数

標準関数

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によって強制的にグローバル変数にアクセスしています。

戻る

Copyright©2001-2019 釣ったよ! All Right Reserved.    sg@tsuttayo.jpn.org