
【6日でできるPHP入門】関数
プログラムが長く複雑になるにつれ、同じ処理を何度も書いたり、1 つの手順を読み解くのが大変になったりします。そこで活躍するのが「関数」です。関数は処理に名前を付けて“まとめる”仕組みで、再利用性・保守性・可読性を大幅に高めます。ここでは PHP を例に、関数の基礎からユーザー定義関数の作り方、実践的な活用例までを体系的に学びます。

1.関数の基本
1.1. 関数とは
用語 | 説明 |
---|---|
関数 (function) | 処理をひとまとまりにし、名前を付けて再利用できる仕組み |
引数 (parameter / argument) | 関数に渡す入力値 |
戻り値 (return value) | 関数が呼び出し元へ返す結果 |
関数を使う最大のメリットは「DRY(Don’t Repeat Yourself)」の実現です。同じロジックを複数回書かずに済むため、バグ発生率も下がります。
1.2. PHP における関数の書式
function 関数名(引数1, 引数2, ...){
// 処理
return 戻り値; // 戻り値が不要な場合は省略可
}
function
… キーワード()
… 引数のカンマ区切りリスト(0 個でも可)return
… 戻り値を返し、同時に関数を終了
1.3. 名前のルールと注意点
- 既存の関数名との重複禁止(例:
strlen
などビルトイン関数を上書きしない) - 英数字とアンダースコアのみ(数字で始めない)
- 可読性を高めるため 動詞+名詞 で命名するのが定番
2.ユーザー定義関数の実践
2.1. 単純な例 ― 差を計算する関数
ファイル名: lesson43_1.php
<?php
// 2 つの数値の差(絶対値)を返す diff 関数
function diff($a, $b){
$result = abs($a - $b);
return $result; // ここで関数終了
}
// 関数の呼び出し
$x = 5;
$y = 2;
$answer = diff($x, $y);
echo "{$x} と {$y} の差は {$answer} です。<br>";
?>
実行結果

ポイント解説
行 | 処理内容 |
---|---|
2 | function diff で関数宣言 |
3 | 絶対値を求めるビルトイン abs() を利用 |
4 | return 直後に処理終了 |
2.2. 複数のユーザー定義関数
ファイル名: lesson43_2.php
<?php
// 最小値を返す min_value 関数
function min_value($a, $b){
return ($a < $b) ? $a : $b;
}
// 指定回数だけ◆を表示する show_symbols 関数
function show_symbols($count, $symbol = "◆"){
for($i = 0; $i < $count; $i++){
echo $symbol;
}
echo "<br>";
return; // 戻り値なし
}
// 指定した名前であいさつする greet 関数
function greet($name = "ゲスト"){
echo "こんにちは、{$name} さん!<br>";
return;
}
// ======== 関数の呼び出し ========
echo "*** min_value 関数 ***<br>";
$m1 = 8; $m2 = 13;
echo "{$m1} と {$m2} の小さいほうは " . min_value($m1, $m2) . " です。<br>";
echo "*** show_symbols 関数 ***<br>";
show_symbols(4); // ◆◆◆◆
show_symbols(6, "☆"); // ☆☆☆☆☆☆
echo "*** greet 関数 ***<br>";
greet("PHP 初心者");
greet(); // デフォルト引数が適用される
?>
実行結果

3.ビルトイン関数との比較
項目 | ユーザー定義関数 | ビルトイン関数 |
---|---|---|
定義場所 | プログラマ自身 | PHP エンジン |
目的 | 独自ロジックをカプセル化 | 汎用的な処理を提供 |
例 | diff() , greet() | strlen() , abs() , array_merge() |
拡張性 | 〇(自由に追加) | ✕(上書き不可) |
学習コスト | 自分で設計が必要 | ドキュメントを読むだけ |
4.応用テクニック
4.1. 可変長引数 (...$nums
)
function sum_all(...$nums){
return array_sum($nums);
}
echo "合計: " . sum_all(3, 4, 8, 10) . "<br>"; // 25
4.2. 型宣言と戻り値の型
function divide(int $a, int $b): float{
if($b === 0){
return INF; // 無限大を返す特殊値
}
return $a / $b;
}
echo divide(7, 2); // 3.5
まとめ
- 関数は“名前付き処理”。重複コードを排除し、保守を容易にする。
function
とreturn
がキーワードの要。return
に到達した時点で関数は終了。- ユーザー定義関数は自由度が高く、ビルトイン関数と組み合わせることで表現力が飛躍的に向上。
- 可変長引数や型宣言などのモダン構文を使うと、意図が明確でバグに強いコードになる。
これで PHP における関数の基礎はマスターです。次はクラスメソッドや匿名関数(クロージャ)にも挑戦して、より高度な再利用パターンを学びましょう。