【PHP】Lesson3-4:関数の引数を自由に扱う方法|デフォルト・キーワード引数を理解しよう

PHPでは関数を柔軟に扱うために「デフォルト引数」と「キーワード引数」という2つの便利な機能を利用できます。
これらを正しく理解し活用することでコードの可読性を高め、意図通りに動作する関数を作成できます。
本記事ではこれらの機能について基本から使用例までを解説します。
Lesson1:基礎文法編
Lesson2:制御構造編
Lesson3:関数編
・Lesson3-1:ビルトイン関数を理解しよう ◁今回はココ
・Lesson3-2:関数の基本を理解しよう
・Lesson3-3:関数の戻り値を理解しよう
・Lesson3-4:デフォルト引数とキーワード引数を理解しよう
・Lesson3-5:関数の型付けを理解しよう
・Lesson3-6:無名関数とアロー関数を理解しよう
・Lesson3-7:スコープを理解しよう
・確認問題3-1:石取りゲームを作ろう
・確認問題3-2:丁半賭博ゲームを作ろう
・確認問題3-3:モンスターとのバトルゲームを作ろう
Lesson4:データ構造編
Lesson5:クラス編
デフォルト引数の基本とは?PHPでの使い方を解説

デフォルト引数とは関数の引数に初期値を設定する機能のことです。
引数を省略して関数を呼び出す場合、このデフォルト値が使用されます。
これにより関数の呼び出し方法が簡略化されることがあります。
PHPでのデフォルト引数の構文ルール
デフォルト引数の基本構文は以下の通りです。
function 関数名($引数 = デフォルト値) { // 処理 }
デフォルト引数を使った関数の呼び出し例
function greet($name = "ゲスト") { echo "こんにちは、" . $name . PHP_EOL; // デフォルト値を利用して挨拶を出力 } // デフォルト値を使用する greet(); // 出力: こんにちは、ゲスト // 引数を指定する greet("太郎"); // 出力: こんにちは、太郎
この例では$name
に値を渡さなかった場合、デフォルト値の”ゲスト”が使用されます。
これにより関数の呼び出しが簡略化できます。
キーワード引数とは?PHP8以降での使い方を解説
キーワード引数とは関数を呼び出す際に引数名を指定して値を渡す機能です。
引数の順序に依存せずに、必要な引数だけを指定できるのが特徴です。
キーワード引数の書き方と構文の注意点
キーワード引数の基本構文は以下の通りです。
関数名(引数名: 値);
キーワード引数を使った具体的な使用例
function displayUser($name, $age, $country = "日本") { echo "名前: $name, 年齢: $age, 国: $country" . PHP_EOL; } // 通常の引数指定 displayUser("花子", 25); // 出力: 名前: 花子, 年齢: 25, 国: 日本 // キーワード引数を使用 displayUser(age: 30, name: "太郎"); // 出力: 名前: 太郎, 年齢: 30, 国: 日本
この例では引数の順序を変えても正しい値が対応する変数に渡されます。
また、デフォルト値の設定も併用できます。
デフォルト引数とキーワード引数を併用するテクニック
デフォルト引数とキーワード引数は組み合わせて使用することが可能です。
これにより、さらに柔軟な関数の呼び出しが可能になります。
function createUser($name, $role = "一般", $age = 18) { echo "名前: $name, 役割: $role, 年齢: $age" . PHP_EOL; } // キーワード引数とデフォルト引数の組み合わせ createUser(name: "太郎", role: "管理者"); // 出力: 名前: 太郎, 役割: 管理者, 年齢: 18 createUser(name: "花子", age: 22); // 出力: 名前: 花子, 役割: 一般, 年齢: 22
ここでは必要な引数だけを指定し、他はデフォルト値を利用することで効率的にコードを書く方法を示しています。
PHP関数の引数指定を極めるポイントまとめ
デフォルト引数を使うことで関数の柔軟性が増し、キーワード引数を活用すれば引数の順序を気にせずコードが書きやすくなります。
これらを正しく使い分けることで、保守性の高いPHPコードを実現できるでしょう。
特に、複数の引数を持つ関数では、キーワード引数の活用が効果的です。
演習問題|デフォルト引数とキーワード引数を使って計算関数を作ろう

引数を使用した計算プログラムを作成し、デフォルト引数とキーワード引数の使い方を勉強しましょう。
まず、2つの数値を引数として受け取る関数を作成します。1つ目の数値は任意の数値、2つ目は倍数を表します。
関数は、この2つの数値を掛け算して結果を返します。
関数をデフォルト引数を使用して呼び出す例と、キーワード引数を使用して呼び出す例の両方を作成してください。
関数の動作を確認するため、計算過程と結果を出力しましょう。
この演習の要件
以下の要件に従ってコードを完成させてください。
- 「計算する」という名前(日本語)の関数を作成し、次の内容を実装すること。
- 引数
$値
を受け取る(デフォルト値は10)。 - 引数
$倍数
を受け取る(デフォルト値は2)。 - これら2つの引数を掛け算した結果を計算し、返す。
- 計算過程を表示する(例:
計算中: 10 x 2 = 20
)。
- 引数
- 関数をデフォルト引数を使用して呼び出し、結果を表示すること。
- 関数をキーワード引数を使用して呼び出し、結果を表示すること。
ただし、以下のような実行結果となること。
デフォルト引数を使った例: 計算中: 10 x 2 = 20 結果: 20 キーワード引数を使った例: 計算中: 3 x 5 = 15 結果: 15
解き方のヒント
1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。
- ヒント1【コードの構成を見る】
-
正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)1:関数
計算する
の定義
□ 引数$値
にデフォルト値10を設定
□ 引数$倍数
にデフォルト値2を設定
□ 変数$結果
に$値
と$倍数
の積を代入
□ 計算過程を文字列の連結で組み立て、echo
で出力
□ 変数$結果
を関数の戻り値として返す
2:関数呼び出し例「デフォルト引数を使った例」を出力
3:関数計算する
をデフォルト引数を使用して呼び出し、その結果を変数$結果1
に代入
4:$結果1
を含む文字列をecho
で出力
5:「キーワード引数を使った例」を改行付きで出力
6:関数計算する
をキーワード引数を使用して呼び出し、その結果を変数$結果2
に代入
7:$結果2
を含む文字列をecho
で出力
- ヒント2【穴埋め問題にする】
-
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
<?php function 計算する($値 = 10, $倍数 = 2) { // 入力された値と倍数で計算を行う /* 【穴埋め問題1】ここで$値と$倍数を掛け合わせて$結果に代入するコードを書いてください。 */ $結果 = null; // 計算の過程を出力する echo "計算中: $値 x $倍数 = " . $結果 . PHP_EOL; // 計算結果を返す return $結果; } // 関数をデフォルト引数を使って呼び出す例 echo "デフォルト引数を使った例:" . PHP_EOL; /* 【穴埋め問題2】ここで計算する関数をデフォルト引数を使って呼び出し、$結果1に代入するコードを書いてください。 */ $結果1 = null; echo "結果: " . $結果1 . PHP_EOL; // キーワード引数を使って呼び出す例 echo PHP_EOL . "キーワード引数を使った例:" . PHP_EOL; /* 【穴埋め問題3】ここでキーワード引数を使って計算する関数を呼び出し、$結果2に代入するコードを書いてください。 */ $結果2 = null; echo "結果: " . $結果2 . PHP_EOL;
このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。
演習問題の答え合わせ
この問題の正解コードとその解説は以下の通りです。
クリックして開いて確認してください。
- 正解コード
-
<?php function 計算する($値 = 10, $倍数 = 2) { // 入力された値と倍数で計算を行う $結果 = $値 * $倍数; // 計算の過程を出力する echo "計算中: $値 x $倍数 = " . $結果 . PHP_EOL; // 計算結果を返す return $結果; } // 関数をデフォルト引数を使って呼び出す例 echo "デフォルト引数を使った例:" . PHP_EOL; $結果1 = 計算する(); echo "結果: " . $結果1 . PHP_EOL; // キーワード引数を使って呼び出す例 echo PHP_EOL . "キーワード引数を使った例:" . PHP_EOL; $結果2 = 計算する(倍数: 5, 値: 3); echo "結果: " . $結果2 . PHP_EOL;
- 正解コードの解説
-
コードをブロックごとに分割して解説します。
関数の定義
function 計算する($値 = 10, $倍数 = 2) { $結果 = $値 * $倍数; echo "計算中: $値 x $倍数 = " . $結果 . PHP_EOL; return $結果; }
function
: 関数を定義するキーワードです。この場合、計算する
という名前の関数を作成しています。- 引数
$値
と$倍数
:- 引数
$値
と$倍数
にデフォルト値(10 と 2)が設定されています。 - デフォルト引数の特徴は、関数を呼び出す際に引数を省略した場合、あらかじめ設定された値が使用されることです。
- 引数
$結果 = $値 * $倍数;
: 引数として受け取った$値
と$倍数
を掛け算し、その結果を$結果
に代入します。echo
: 計算過程を画面に出力します。PHP_EOL(改行)を使用して、表示が見やすくなっています。return
: 計算結果を返すキーワードです。返された値は関数を呼び出した場所で利用できます。
デフォルト引数の使用例
$結果1 = 計算する();
引数を省略して関数を呼び出すとデフォルト値(10 と 2)が使用されます。
この場合、計算は
10 x 2
として処理されます。キーワード引数の使用例
$結果2 = 計算する(倍数: 5, 値: 3);
- キーワード引数を使用することで、引数を名前付きで渡すことができます。
- このコードでは
$倍数
に 5、$値
に 3 を渡しているため、計算は3 x 5
として処理されます。 - キーワード引数のメリット:
- 引数の順序を気にせずに値を渡せるため、コードが読みやすくなります。
- 特定の引数だけを明示的に指定したい場合に便利です。
まとめ
このコードではデフォルト引数とキーワード引数を使った関数の定義と利用方法を学びました。
- デフォルト引数を使うと関数の呼び出し時に引数を省略しても動作します。
- キーワード引数を使うと引数を柔軟に渡すことができ、可読性が向上します。
これらの機能を組み合わせることで、柔軟かつ再利用性の高いコードを書くことが可能です。
ぜひ実際にコードを書いて動作を確認しながら学習を進めてください!