【PHP】Lesson3-4:デフォルト引数とキーワード引数を理解しよう

ながみえ

一つ前のレッスンでは 関数の戻り値 について学習しました。

今回は デフォルト引数キーワード引数 について見ていきましょう。

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で関数を定義する際、「引数」にどんな値を渡すか悩んだことはありませんか?

本記事では、デフォルト引数キーワード引数という2つの便利な仕組みについて、初心者にも分かりやすく解説します。

これらを使いこなすことで、「引数を省略してシンプルに関数を呼び出したい」「値の順番を気にせず柔軟に関数を使いたい」といった悩みを解決でき、より効率的で読みやすいプログラムを書くことができるようになります。

ぜひ最後まで読んで、実践に活かしてみてください。

デフォルト引数とは?|基本構文と使用例を解説

デフォルト引数 とは関数の引数に初期値を設定する機能のことです。

これを設定した関数は、引数を省略して呼び出した際にこのデフォルト値が使用されます。

デフォルト引数の基本構文は以下の通りです。

function 関数名(引数 = デフォルト値) { // デフォルト引数を持つ新規関数の定義
    // この関数の処理内容
}

デフォルト引数の使用例を見てみましょう。

function greet($name = "ゲスト") {		   // デフォルト引数を持つ関数greetの定義
    echo "こんにちは、{$name}さん!". PHP_EOL;	// この関数の処理内容
}

// 引数を指定せずに呼出し
greet();       // 出力: こんにちは、ゲスト

// 引数を指定して呼び出し
greet("太郎"); // 出力: こんにちは、太郎

この例では$nameに値を渡さなかった場合、デフォルト値の”ゲスト”が使用されます。

このコードを実行すると、以下のように出力されます。

こんにちは、ゲストさん!
こんにちは、太郎さん!

キーワード引数とは?|PHP8以降での使い方を解説

キーワード引数 とは関数を呼び出す際に引数名を指定して値を渡す機能です。

引数の順序に依存せずに、必要な引数だけを指定できるのが特徴です。

キーワード引数の基本構文は以下の通りです。

関数名(引数名: 値)	// 引数名を指定して関数を呼び出し

デフォルト引数の使用例を見てみましょう。

function displayUser($name, $age, $country) {	// 3つの引数を持つ関数を定義
    echo "名前: $name, 年齢: $age, 国: $country" . PHP_EOL;
}

// 通常の引数指定(順番通りに書く必要あり)
displayUser("花子", 25, "日本"); // 出力: 名前: 花子, 年齢: 25, 国: 日本

// キーワード引数を使用(順不同に書いてもOK)
displayUser(age: 30, name: "Jhon", country: "アメリカ"); // 出力: 名前: 太郎, 年齢: 30, 国: 日本

この例では引数の順序を変えても正しい値が対応する変数に渡されます。

このコードを実行すると、以下のように出力されます。

名前: 花子, 年齢: 25, 国: 日本
名前: Jhon, 年齢: 30, 国: アメリカ

デフォルト引数とキーワード引数を併用するテクニック

デフォルト引数とキーワード引数は組み合わせて使用することが可能です。

これにより、さらに柔軟な関数の呼び出しが可能になります。

function createUser($name, $role = "一般", $age = 18) {
    echo "名前: $name, 役割: $role, 年齢: $age" . PHP_EOL;
}

// キーワード引数とデフォルト引数の組み合わせ
createUser(name: "太郎", role: "管理者"); // 出力: 名前: 太郎, 役割: 管理者, 年齢: 18

createUser(name: "花子", age: 22); // 出力: 名前: 花子, 役割: 一般, 年齢: 22

ここでは必要な引数だけを指定し、他はデフォルト値を利用することで効率的にコードを書く方法を示しています。

このコードを実行すると以下のように出力されます。

名前: 太郎, 役割: 管理者, 年齢: 18
名前: 花子, 役割: 一般, 年齢: 22

まとめ|デフォルト引数とキーワード引数の使い方と活用ポイント

この記事では、PHPにおけるデフォルト引数とキーワード引数の基本から応用までを解説しました。

デフォルト引数を使うことで、関数の呼び出しを柔軟にし、不要な引数指定を減らせるようになりました。

また、キーワード引数を活用することで、引数の順番に縛られずにコードをより直感的に書くことができます。

これらのテクニックを身につけたことで、実践的な関数の設計や、保守性の高いコード作成ができるようになったはずです。

今後は、さらに応用的なPHPの使い方にも挑戦し、より高度なプログラムへとステップアップしていきましょう!

演習問題|デフォルト引数とキーワード引数を使って計算関数を作ろう

引数を使用した計算プログラムを作成し、デフォルト引数とキーワード引数の使い方を勉強しましょう。

まず、2つの数値を引数として受け取る関数を作成します。1つ目の数値は任意の数値、2つ目は倍数を表します。

関数は、この2つの数値を掛け算して結果を返します。

関数をデフォルト引数を使用して呼び出す例と、キーワード引数を使用して呼び出す例の両方を作成してください。

関数の動作を確認するため、計算過程と結果を出力しましょう。

この演習の要件

以下の要件に従ってコードを完成させてください。

  1. 「計算する」という名前(日本語)の関数を作成し、次の内容を実装すること。
    • 引数 $値 を受け取る(デフォルト値は10)。
    • 引数 $倍数 を受け取る(デフォルト値は2)。
    • これら2つの引数を掛け算した結果を計算し、返す。
    • 計算過程を表示する(例: 計算中: 10 x 2 = 20)。
  2. 関数をデフォルト引数を使用して呼び出し、結果を表示すること。
  3. 関数をキーワード引数を使用して呼び出し、結果を表示すること。

ただし、以下のような実行結果となること。

デフォルト引数を使った例:
計算中: 10 x 2 = 20
結果: 20

キーワード引数を使った例:
計算中: 3 x 5 = 15
結果: 15

解き方のヒント

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

Q
ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)

1:関数計算するの定義
  □ 引数$値にデフォルト値10を設定
  □ 引数$倍数にデフォルト値2を設定
  □ 変数$結果$値$倍数の積を代入
  □ 計算過程を文字列の連結で組み立て、echoで出力
  □ 変数$結果を関数の戻り値として返す
2:関数呼び出し例「デフォルト引数を使った例」を出力
3:関数計算するをデフォルト引数を使用して呼び出し、その結果を変数$結果1に代入
4:$結果1を含む文字列をechoで出力
5:「キーワード引数を使った例」を改行付きで出力
6:関数計算するをキーワード引数を使用して呼び出し、その結果を変数$結果2に代入
7:$結果2を含む文字列をechoで出力

Q
ヒント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;

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。

演習問題の答え合わせ

この問題の正解コードとその解説は以下の通りです。

クリックして開いて確認してください。

Q
正解コード
<?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;
Q
正解コードの解説

コードをブロックごとに分割して解説します。

関数の定義

function 計算する($値 = 10, $倍数 = 2) {
    $結果 = $値 * $倍数;
    echo "計算中: $値 x $倍数 = " . $結果 . PHP_EOL;
    return $結果;
}
  1. function: 関数を定義するキーワードです。この場合、計算するという名前の関数を作成しています。
  2. 引数 $値$倍数:
    • 引数 $値$倍数 にデフォルト値(10 と 2)が設定されています。
    • デフォルト引数の特徴は、関数を呼び出す際に引数を省略した場合、あらかじめ設定された値が使用されることです。
  3. $結果 = $値 * $倍数;: 引数として受け取った $値$倍数 を掛け算し、その結果を $結果 に代入します。
  4. echo: 計算過程を画面に出力します。PHP_EOL(改行)を使用して、表示が見やすくなっています。
  5. return: 計算結果を返すキーワードです。返された値は関数を呼び出した場所で利用できます。

デフォルト引数の使用例

$結果1 = 計算する();

引数を省略して関数を呼び出すとデフォルト値(10 と 2)が使用されます。

この場合、計算は 10 x 2 として処理されます。

キーワード引数の使用例

$結果2 = 計算する(倍数: 5, 値: 3);
  1. キーワード引数を使用することで、引数を名前付きで渡すことができます。
  2. このコードでは $倍数 に 5、$値 に 3 を渡しているため、計算は 3 x 5 として処理されます。
  3. キーワード引数のメリット:
    • 引数の順序を気にせずに値を渡せるため、コードが読みやすくなります。
    • 特定の引数だけを明示的に指定したい場合に便利です。
もっと分かりやすい学習サイトにするために

この記事を読んで「ここが分かりにくかった」「ここが難しかった」等の意見を募集しています。

世界一わかりやすいPHP学習サイトにするため、ぜひ 問い合わせフォーム からご意見下さい。

<<前のページ

学習記事一覧

次のページ>>

記事URLをコピーしました