【PHP】レッスン3-04:デフォルト引数とキーワード引数を理解しよう

記事内に商品プロモーションを含む場合があります

この記事で学べる知識:デフォルト引数とキーワード引数

この記事の練習問題を解くために必要な知識:
ビルトイン関数関数の定義と呼出し関数の戻り値デフォルト引数とキーワード引数関数の型付け無名関数とアロー関数スコープ

<<前のページ PHP記事一覧 次のページ>>

PHPの「デフォルト引数とキーワード引数」とは

この章ではPHPにおける「デフォルト引数とキーワード引数」の意味や使い方を学習します。用語の解説が不要な方はここをクリックして練習問題へ飛びましょう。




PHPでは関数を柔軟に扱うために「デフォルト引数」と「キーワード引数」という2つの便利な機能を利用できます。

これらを正しく理解し活用することでコードの可読性を高め、意図通りに動作する関数を作成できます。

本記事ではこれらの機能について基本から使用例までを解説します。

デフォルト引数とは?

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

引数を省略して関数を呼び出す場合、このデフォルト値が使用されます。

これにより関数の呼び出し方法が簡略化されることがあります。

デフォルト引数の基本構文

function 関数名($引数 = デフォルト値) {
    // 処理
}

デフォルト引数の使用例

function greet($name = "ゲスト") {
    echo "こんにちは、" . $name . PHP_EOL; // デフォルト値を利用して挨拶を出力
}

// デフォルト値を使用する
greet();       // 出力: こんにちは、ゲスト

// 引数を指定する
greet("太郎"); // 出力: こんにちは、太郎

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

これにより関数の呼び出しが簡略化できます。

キーワード引数とは?

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

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

キーワード引数の基本構文

関数名(引数名: 値);

キーワード引数の使用例

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コードを実現できるでしょう。

特に、複数の引数を持つ関数では、キーワード引数の活用が効果的です。

デフォルト引数とキーワード引数の練習問題:簡単な計算関数を体験しよう

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

まず、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からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

ヒント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 $結果;
}
  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記事一覧 次のページ>>

この記事への質問・コメント

この記事を作成するにあたりAIを活用しています。

問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。






    PHPのテキスト&問題集トップへ戻る
    トップページへ戻る