0Pricing
PHP Academy · レッスン

関数の定義と呼び出し

パラメーターと戻り値を備えた独自の関数を作成します。

「関数の定義と呼び出し」はCoddyKit上の無料PHP Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPHP Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 PHP Academyコースには全4レッスンが含まれています。

関数を使う理由

関数を使うと、再利用可能なロジックをまとめて名前を付けられるため、コードを繰り返さずに何度も呼び出せます。主な利点は次のとおりです。

  • 重複を避けられる(DRY原則)
  • テストとデバッグが容易になる
  • コード自体がドキュメントになる

関数の定義

function キーワード、名前、オプションのパラメーター、本体を使用します。

<?php
function greet(string $name): string {
    return 'Hello, ' . $name . '!';
}

echo greet('Alice'); // Hello, Alice!

パラメーターと引数

パラメーターは定義内の変数名で、引数は呼び出し時に渡す実際の値です。

<?php
function add(int $a, int $b): int {
    return $a + $b;  // $a and $b are parameters
}

$sum = add(3, 4);  // 3 and 4 are arguments
echo $sum;  // 7

戻り値

return を使って呼び出し元に値を返します。return のない関数は NULL を返します。

<?php
function square(float $n): float {
    return $n * $n;
}

function logMessage(string $msg): void {
    echo '[LOG] ' . $msg . PHP_EOL;
    // void functions must not return a value
}

echo square(4);        // 16
logMessage('started'); // [LOG] started

値渡しと参照渡し

デフォルトでは、PHPは引数を値渡し(コピー)します。& を先頭に付けると参照渡しになります。

<?php
function doubleByValue(int $n): void {
    $n *= 2;  // changes only the local copy
}

function doubleByRef(int &$n): void {
    $n *= 2;  // changes the original
}

$x = 5;
doubleByValue($x);
echo $x; // 5 — unchanged

doubleByRef($x);
echo $x; // 10 — changed

複数の return 箇所

関数には、早期終了のために複数の return 文を記述できます。

<?php
function divide(float $a, float $b): ?float {
    if ($b === 0.0) {
        return null;  // early return on error
    }
    return $a / $b;
}

var_dump(divide(10, 0));   // NULL
echo divide(10, 2);         // 5

関数のホイスティング

PHPの関数は、ファイル内のどこで定義されているかにかかわらず、ファイル全体で使用できます。JavaScriptとは異なり、ほとんどのPHP関数は使用前に宣言する必要がありません。

<?php
echo double(5);  // 10 — works even though double is defined below

function double(int $n): int {
    return $n * 2;
}

// Exception: functions inside conditionals ARE position-sensitive

再帰関数

自分自身を呼び出す関数を再帰関数と呼びます。無限再帰を避けるため、必ず基底ケースを用意してください。

<?php
function factorial(int $n): int {
    if ($n <= 1) return 1;  // base case
    return $n * factorial($n - 1);  // recursive call
}

echo factorial(5);  // 120

型宣言

PHP 7以降では、パラメーターと戻り値の型ヒントをサポートしています。PHP 8では mixed、never、交差型が追加されました。

<?php
declare(strict_types=1);

function clamp(int $value, int $min, int $max): int {
    return max($min, min($max, $value));
}

echo clamp(150, 0, 100);  // 100
echo clamp(-5,  0, 100);  // 0
echo clamp(42,  0, 100);  // 42

名前付き関数と組み込み関数

PHPには数千もの組み込み関数が用意されています。実行時には、関数が存在するかどうかをいつでも確認できます。

<?php
if (function_exists('mb_strlen')) {
    echo mb_strlen('こんにちは');  // 5 — correct multi-byte length
} else {
    echo strlen('こんにちは');      // 15 — byte count, wrong for UTF-8
}

複数の値を返す

配列を返し、呼び出し側で分割代入することで、複数の値を返せます。

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

[$min, $max] = minMax([3, 1, 7, 2, 9]);
echo "Min: $min, Max: $max";  // Min: 1, Max: 9

クイックチェック

明示的な return 文がないPHP関数は何を返しますか。

まとめ: 関数

PHP関数の基本です。

  • function name(params): returnType で定義します
  • 値渡し(デフォルト)または & による参照渡しで引数を渡します
  • return のない関数は NULL を返します
  • 再帰には基底ケースが必要です
  • 関数はファイル全体で使用できます(ホイスティング)

次は、デフォルトパラメーターと可変長パラメーターです。

よくある質問

「関数の定義と呼び出し」レッスンは無料ですか?

はい。「関数の定義と呼び出し」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、PHP Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 PHP Academyコースには全4レッスンが含まれています。

「関数の定義と呼び出し」で何を学びますか?

パラメーターと戻り値を備えた独自の関数を作成します。 ブラウザで直接実行するハンズオンコードでPHP Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

PHP Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのPHP Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「関数の定義と呼び出し」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このPHP Academyレッスンでコードを書いて実行できますか?

はい。すべてのPHP Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 関数の定義と呼び出し
  2. デフォルトパラメーターと可変長パラメーター
  3. 変数のスコープ:ローカルとグローバル
  4. 匿名関数とクロージャ
← PHP Academyに戻る