PHPにおける「関数(Functions)」は、プログラムの中で再利用可能なコードのブロックを定義するための非常に重要な概念です。関数を使用することによって、コードの再利用性が高まり、プログラムがより整理され、効率的になります。この記事では、PHPにおける関数の基本的な使い方から応用的な利用方法まで、完全かつ包括的に解説します。
1. PHP関数の基本
1.1 関数の定義
PHPで関数を定義するには、function
キーワードを使用します。関数は、名前、引数、処理内容、そして返り値を持つことができます。基本的な構文は次の通りです。

phpfunction 関数名(引数1, 引数2, ...) {
// 関数の処理内容
return 戻り値;
}
例えば、引数として2つの数値を受け取り、その合計を返す簡単な関数を定義する例は以下の通りです。
phpfunction add($a, $b) {
return $a + $b;
}
この関数を呼び出すときは、次のように記述します。
php$result = add(5, 3);
echo $result; // 出力: 8
1.2 引数と返り値
関数に渡す引数は任意であり、指定しない場合はデフォルト値を設定することも可能です。また、関数は何も返さない場合もあり、その場合はreturn
を省略できます。
php// 引数にデフォルト値を設定する
function greet($name = "ゲスト") {
echo "こんにちは、" . $name . "さん!";
}
greet(); // 出力: こんにちは、ゲストさん!
greet("太郎"); // 出力: こんにちは、太郎さん!
関数が返す値をreturn
ステートメントを使用して指定できます。関数が返り値を持たない場合は、return
を省略できます。
2. 関数の種類
PHPには、ユーザー定義関数の他にも組み込み関数(ビルトイン関数)が多数存在します。ここでは代表的な関数の種類を紹介します。
2.1 組み込み関数
PHPには多くの組み込み関数が用意されています。例えば、文字列を操作する関数や配列を操作する関数などがあります。
-
strlen()
: 文字列の長さを返す。phpecho strlen("Hello"); // 出力: 5
-
array_merge()
: 複数の配列を結合する。php$array1 = [1, 2]; $array2 = [3, 4]; $merged = array_merge($array1, $array2); print_r($merged); // 出力: Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 )
-
date()
: 現在の日付と時刻をフォーマットして返す。phpecho date("Y-m-d H:i:s"); // 出力: 2025-04-20 12:34:56
2.2 再帰関数
再帰関数とは、関数が自分自身を呼び出す関数のことです。再帰関数は特に問題解決の際に役立ちます。
例えば、階乗を求める再帰関数は次のようになります。
phpfunction factorial($n) {
if ($n <= 1) {
return 1;
}
return $n * factorial($n - 1);
}
echo factorial(5); // 出力: 120
この関数は、factorial(5)
のように呼び出されると、内部でfactorial(4)
, factorial(3)
と再帰的に自分自身を呼び出します。
2.3 無名関数(クロージャ)
無名関数(匿名関数)とは、名前を持たない関数のことです。PHPでは、無名関数を変数に代入して、後で呼び出すことができます。
php$sum = function($a, $b) {
return $a + $b;
};
echo $sum(2, 3); // 出力: 5
無名関数は、関数を引数として渡すときにも便利です。例えば、array_map()
関数に無名関数を渡して、配列の各要素を処理することができます。
php$array = [1, 2, 3];
$new_array = array_map(function($value) {
return $value * 2;
}, $array);
print_r($new_array); // 出力: Array ( [0] => 2 [1] => 4 [2] => 6 )
3. 関数のスコープ
PHPでは、変数にはスコープがあり、関数内で定義された変数は関数外からはアクセスできません。これを「ローカル変数」と呼びます。また、関数外で定義された変数は「グローバル変数」としてアクセス可能です。
3.1 ローカル変数
関数内で定義された変数は、その関数内でのみ使用できます。関数外からはアクセスできません。
phpfunction myFunction() {
$x = 10; // ローカル変数
echo $x;
}
myFunction(); // 出力: 10
// echo $x; // エラー: 未定義の変数 $x
3.2 グローバル変数
グローバル変数は、関数外で定義された変数で、関数内から使用するためにはglobal
キーワードを使う必要があります。
php$x = 10; // グローバル変数
function myFunction() {
global $x;
echo $x; // グローバル変数 $x を参照
}
myFunction(); // 出力: 10
また、関数内でグローバル変数を参照するために、$GLOBALS
スーパーグローバル配列を使うこともできます。
php$x = 10;
function myFunction() {
echo $GLOBALS['x']; // グローバル変数 $x を参照
}
myFunction(); // 出力: 10
4. 関数の引数と戻り値の型指定
PHP7以降、関数の引数や戻り値に型を指定することができます。これにより、関数に渡される引数や返される値が指定された型であることが保証されます。
4.1 引数の型指定
引数に型を指定することで、その型以外の値が渡された場合にエラーが発生します。
phpfunction add(int $a, int $b): int {
return $a + $b;
}
echo add(3, 5); // 出力: 8
// echo add(3, "5"); // エラー: 引数の型が一致しません
4.2 戻り値の型指定
戻り値にも型を指定できます。これにより、関数が必ず指定された型の値を返すことを強制できます。
phpfunction multiply(int $a, int $b): float {
return $a * $b * 0.5;
}
echo multiply(4, 5); // 出力: 10
5. 結論
PHPの関数は、コードの再利用性を高め、プログラムの管理や保守を容易にするための強力なツールです。関数をうまく活用することで、より効率的で洗練されたコードを書くことができます。基本的な関数の使い方に加え、再帰関数や無名関数、スコープ、型指定など、さまざまな応用技法を駆使することで、PHPプログラミングのスキルを大いに向上させることができるでしょう。