PHPの関数とは?functionの書き方・引数・戻り値を解説

PR PHP

PHPの関数とは?functionの書き方・引数・戻り値を解説

💡 この記事でわかること

  • 関数とは何か、なぜ使うのか
  • function を使った関数の定義と呼び出し方
  • 引数で値を渡す方法と、return で結果を返す方法
  • デフォルト引数・名前付き引数(PHP 8)の使い方
  • PHPの関数は外の変数が見えない、というスコープの考え方

1. 関数とは?

関数とは、
👉 いくつかの処理をひとまとめにして、名前をつけたものです。

💡 同じような処理を何度も書く代わりに、関数として1回定義しておけば、名前を書くだけで何度でも呼び出せます。コードの重複が減り、修正も1か所で済むようになります。

これまで使ってきた echo(正確には構文ですが)や count()strlen()var_dump() なども、PHPにあらかじめ用意された関数です。この記事では、それを自分で作る方法を見ていきます。


2. 関数の定義と呼び出し(function)

関数を作ることを「定義する」といい、function を使います。作った関数は、名前のうしろに () を付けて「呼び出す」と実行されます。

<?php
function hello() {
    echo "こんにちは";
    echo "PHPの関数です";
}

hello();   // ← 呼び出し。ここで中の処理が実行される
  • function 関数名() { ... } で定義する
  • 関数の中身は { } の中に書く
  • 定義しただけでは実行されない。hello()呼び出して初めて動く

👉 PHPの基本文法(<?php ?>・echo・変数)についての記事はこちら


3. 引数 — 関数に値を渡す

関数名の () の中に変数名を書くと、呼び出すときに値を渡せます。この受け渡しする値を引数(ひきすう)といいます。

<?php
function greet($name) {
    echo "こんにちは、{$name}さん";
}

greet("太郎");   // こんにちは、太郎さん
greet("花子");   // こんにちは、花子さん

引数は複数渡すこともできます。その場合はカンマで区切り、書いた順番どおりに対応します。

<?php
function introduce($name, $age) {
    echo "{$name}さんは{$age}歳です";
}

introduce("太郎", 20);   // 太郎さんは20歳です

👉 定義側で受け取る変数を「仮引数」、呼び出し側で実際に渡す値を「実引数」と呼びます。必要な個数を渡していないとエラーになります。


4. 戻り値(return)

return を使うと、関数の処理結果を呼び出し元に返すことができます。返される値を戻り値といいます。

<?php
function add($a, $b) {
    return $a + $b;
}

$result = add(3, 5);
echo $result;       // 8
echo add(10, 20);   // 30(戻り値を直接使うこともできる)

👉 return が実行されると、そこで関数は終了しますreturn のあとに書いた処理は実行されません。

💡 return を書かない関数は null(値がないことを表す特別な値)を返しますecho は画面に表示するだけで、値を返すわけではありません。「表示する」と「返す」は別物なので、混同しないよう注意しましょう。

関数の中では、if文やforeachも自由に使えます。

<?php
function judge($score) {
    if ($score >= 60) {
        return "合格";
    }
    return "不合格";
}

echo judge(75);   // 合格
echo judge(40);   // 不合格

💡 引数や戻り値には型を書くこともできます(function add(int $a, int $b): int のような書き方)。PHPの新しいスタイルですが、最初は型なしでも問題ありません。

👉 PHPのif文・for文・while文についての記事はこちら


5. デフォルト引数(省略できる引数)

引数に = で初期値を設定しておくと、呼び出すときにその引数を省略できます。省略された場合は初期値が使われます。

<?php
function greet($name, $greeting = "こんにちは") {
    echo "{$greeting}、{$name}さん";
}

greet("太郎");                // こんにちは、太郎さん($greeting は初期値)
greet("花子", "おはよう");     // おはよう、花子さん

👉 デフォルト引数は、必ず通常の引数よりあとに書きますfunction greet($greeting = "...", $name) のような順番はエラーになります。


6. 名前付き引数(PHP 8)

呼び出すときに 引数名: 値 の形で渡すと、順番を気にせず、どの引数に渡すかを明示できます(PHP 8.0以降で使えます)。

<?php
function profile($name, $age, $city) {
    echo "{$name} / {$age}歳 / {$city}";
}

// 順番どおりに渡す(位置引数)
profile("太郎", 20, "東京");

// 名前を指定して渡す(名前付き引数)。順番が違ってもよい
profile(city: "大阪", name: "花子", age: 25);

💡 引数が多い関数では、名前付き引数で渡すとコードが読みやすくなります。どの値が何を表すのか、呼び出し側を見ただけで分かるためです。


7. 複数の値を返す(配列で返す)

PHPの return が返せる値は1つだけです。複数の値を返したいときは、配列にまとめて返し、受け取る側で分割代入するのが定番です。

<?php
function minMax($numbers) {
    return [min($numbers), max($numbers)];
}

[$low, $high] = minMax([3, 1, 8, 5]);
echo $low;    // 1
echo $high;   // 8

👉 [$low, $high] = ... は、配列の要素を順番に別々の変数へ取り出す書き方(分割代入)です

👉 PHPの配列・連想配列についての記事はこちら


8. 変数のスコープ(関数の中と外)

👉 関数の中で作った変数は、その関数の中でしか使えません。この「変数が使える範囲」をスコープといいます。

<?php
function calc() {
    $total = 100;   // calc の中だけで有効
    echo $total;
}

calc();        // 100
echo $total;   // 警告! 関数の外からは $total を使えない

💡 さらにPHPでは、関数の外で定義した変数を、関数の中からそのまま読むこともできません(Pythonなどとは異なる点です)。次のコードはエラーになります。

<?php
$tax = 1.1;

function price($base) {
    return $base * $tax;   // エラー: $tax はここでは見えない
}

👉 関数に外の値を使わせたいときは、global に頼らず「引数で渡す」「return で返す」のが基本です。そうすることで、関数が何を受け取り何を返すのかが呼び出し側から分かり、バグを減らせます。

<?php
function price($base, $tax) {
    return $base * $tax;
}

echo price(1000, 1.1);   // 1100

9. 関数まわりの用語まとめ

用語意味
定義(function)関数を作ること
呼び出し作った関数を実行すること(関数名())
引数(ひきすう)関数に渡す値
戻り値関数が return で返す結果。return がなければ null
デフォルト引数省略されたときに使われる初期値
名前付き引数呼び出し時に 引数名: 値 で渡す方法(PHP 8)
スコープ変数が使える範囲。PHPの関数は外の変数が見えない

10. まとめ

  • function 関数名() { } で定義し、関数名() で呼び出す
  • 引数で値を渡し、returnで結果を返す
  • return がない関数は null を返す(「表示」と「返す」は別物)
  • デフォルト引数で省略可能に、名前付き引数(PHP 8)で分かりやすく渡せる
  • PHPの関数は外の変数が見えない(スコープ)。やりとりは引数と return で行う

👉 「同じコードを2回書きそうになったら関数にする」と意識するだけで、プログラムがぐっと整理されます。まずは引数1つ・return 1つの小さな関数から作ってみましょう。

-PHP
-, , ,