【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>";
?>

実行結果

ポイント解説

処理内容
2function diff で関数宣言
3絶対値を求めるビルトイン abs() を利用
4return 直後に処理終了

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

まとめ

  • 関数は“名前付き処理”。重複コードを排除し、保守を容易にする。
  • functionreturn がキーワードの要。return に到達した時点で関数は終了。
  • ユーザー定義関数は自由度が高く、ビルトイン関数と組み合わせることで表現力が飛躍的に向上。
  • 可変長引数や型宣言などのモダン構文を使うと、意図が明確でバグに強いコードになる。

 これで PHP における関数の基礎はマスターです。次はクラスメソッドや匿名関数(クロージャ)にも挑戦して、より高度な再利用パターンを学びましょう。