【PHP】レッスン3-02:関数の基本を理解しよう

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

この記事で学べる知識:関数の定義と呼び出し

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

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

PHPの「関数の定義と呼出し」とは

この章ではPHPにおける「関数の定義と呼出し」の意味や使い方を学習します。用語の解説が不要な方はここをクリックして練習問題へ飛びましょう。




関数とは、特定の処理をひとまとめにして再利用できるようにした仕組みです。

プログラムを効率よく書けるだけでなく、コードの見通しが良くなり、保守性が向上します。

PHPでは必要な処理を関数として定義し、それを呼び出すことで簡単に利用できます。

関数の定義

PHPで関数を定義する基本構文は以下のようになります:

function 関数名(仮引数) {
    // 処理
}
  • function キーワード:関数を定義するために使用します。
  • 関数名:関数を識別するための名前。英数字とアンダースコアが使えます。
  • 仮引数:関数に渡されるデータの受け取り先。複数設定することも可能です(必要に応じて省略も可能)。
  • 処理:関数が実行する具体的な内容。

例:簡単な関数の定義

以下は名前を表示する簡単な関数です。

function sayHello($name) { // 変数$nameを仮引数とする、sayHelloという名前の関数を定義
    echo "こんにちは、" . $name . "さん!" . PHP_EOL; // sayHello関数の処理内容
}

関数の呼び出し

定義した関数を使うには、関数名の後に丸括弧を付け、必要な実引数を渡します。

これを「関数の呼び出し」と言います。

sayHello("太郎"); // sayHello関数に実引数「太郎」を渡して呼び出し

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

こんにちは、太郎さん!

ポイント

  • 実引数の数や型が、関数定義での仮引数と一致している必要があります。
  • 関数を呼び出すと、定義した処理が実行されます。

関数の使用例と応用

複数の引数を利用した関数を定義してみましょう。

以下の関数は2つの数値を掛け算し、結果を表示します。

function multiplyAndPrint($num1, $num2) { // ふたつの仮引数を持つ関数multiplyAndPrintを定義
    $result = $num1 * $num2;              // 数値を掛け算
    echo "計算結果は " . $result . " です。" . PHP_EOL;
}

// 関数を呼び出す
multiplyAndPrint(3, 4); // 実行結果:計算結果は 12 です。
multiplyAndPrint(7, 8); // 実行結果:計算結果は 56 です。
  • multiplyAndPrint関数は、2つの数値を受け取ります。
  • $result変数に掛け算の結果を代入します。
  • echoで結果を表示します。

まとめ

PHPの関数は同じ処理を何度も使いたいときに役立ちます。

次の章では「関数の戻り値」と言うものを利用して、さらに柔軟な関数を作成する方法について学びます。

関数の基本の練習問題:簡単な関数を作って呼び出してみよう!

PHPで簡単な関数を作り、その関数を呼び出す方法を勉強しましょう。

今回は名前と年齢を入力してもらい、そのデータを使って挨拶のメッセージを作成して表示するプログラムを作ります。

関数の定義方法や、関数の呼び出し時に引数を渡す方法を理解することが目標です。

この問題の要件

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

  1. greetUser という名前の関数を作成すること。
    この関数は名前と年齢を受け取り、以下の3行のメッセージを出力する。

    • 「こんにちは、○○さん。」
    • 「あなたは △△ 歳ですね。」
    • 「素晴らしい一日をお過ごしください!」
  2. 標準入力を使用して、以下のデータを取得すること。
    • 名前(文字列)
    • 年齢(整数)
  3. 入力された名前と年齢を関数 greetUser に渡し、関数の中で挨拶メッセージを表示すること。

ただし、以下のような実行結果となるコードを書くこと。

*****↓↓正解コードの実行結果の例↓↓*****

名前を入力してください: 太郎
年齢を入力してください: 25
こんにちは、太郎さん。
あなたは 25 歳ですね。
素晴らしい一日をお過ごしください!

この問題を解くヒント

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

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

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

1:PHPの開始タグを記述
2:関数greetUserを定義し、名前と年齢を引数として受け取る
  □ 「こんにちは、名前さん。」という挨拶を出力
  □ 「あなたは年齢歳ですね。」というメッセージを出力
  □ 「素晴らしい一日をお過ごしください!」というメッセージを出力
3:「名前を入力してください:」というプロンプトを出力
4:標準入力から文字列を取得し、空白を削除して変数$nameに代入
5:「年齢を入力してください:」というプロンプトを出力
6:標準入力から文字列を取得し、整数型にキャストして変数$ageに代入
7:greetUser関数を呼び出し、引数に$nameと$ageを渡す

ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

<?php
// 関数を定義します。
/* 【穴埋め問題1】
ここにgreetUser関数を定義し、名前と年齢を引数として受け取り、挨拶メッセージを出力するコードを書いてください。
*/

// ユーザーから名前を入力してもらいます。
echo "名前を入力してください: ";
/* 【穴埋め問題2】
ここに標準入力から文字列を取得し、空白を削除して変数$nameに代入するコードを書いてください。
*/

// ユーザーから年齢を入力してもらいます。
echo "年齢を入力してください: ";
/* 【穴埋め問題3】
ここに標準入力から文字列を取得し、整数型にキャストして変数$ageに代入するコードを書いてください。
*/

// 定義した関数を呼び出して、挨拶のメッセージを表示します。
/* 【穴埋め問題4】
ここにgreetUser関数を呼び出し、引数に$nameと$ageを渡すコードを書いてください。
*/

以上がこの問題の穴埋めコードです。

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



練習問題の解答と解説

この問題の一つの正解例とそのコードの解説を以下に示します。

正解コードの例

例えば以下のようなプログラムが考えられます。

<?php
// 関数を定義します。
function greetUser($name, $age) {
    // 名前と年齢を使用して挨拶を作成
    echo "こんにちは、" . $name . "さん。" . PHP_EOL;
    echo "あなたは " . $age . " 歳ですね。" . PHP_EOL;
    echo "素晴らしい一日をお過ごしください!" . PHP_EOL;
}

// ユーザーから名前を入力してもらいます。
echo "名前を入力してください: ";
$name = trim(fgets(STDIN)); // 標準入力から名前を取得

// ユーザーから年齢を入力してもらいます。
echo "年齢を入力してください: ";
$age = (int)trim(fgets(STDIN)); // 標準入力から年齢を取得し、整数にキャスト

// 定義した関数を呼び出して、挨拶のメッセージを表示します。
greetUser($name, $age); // 名前と年齢を渡して関数を実行

正解コードの解説

今回作成したPHPコードは「関数の定義と呼び出し」を学ぶためのプログラムです。

以下、コードをブロックごとに分けて説明します。

PHPタグと標準入力の準備

<?php
echo "名前を入力してください: ";
$name = trim(fgets(STDIN));
  • <?php: PHPコードを開始するタグです。このタグがないとPHPスクリプトは動作しません。
  • echo: 文字列を出力する関数です。ここでは「名前を入力してください」というメッセージを表示しています。
  • fgets(STDIN): 標準入力からデータを取得するPHPのビルトイン関数です。ユーザーが入力した値を読み取ります。
  • trim: 入力値から余分な空白や改行を取り除くビルトイン関数です。

関数の定義

function greetUser($name, $age) {
    echo "こんにちは、" . $name . "さん。" . PHP_EOL;
    echo "あなたは " . $age . " 歳ですね。" . PHP_EOL;
    echo "素晴らしい一日をお過ごしください!" . PHP_EOL;
}
  • function: 新しい関数を定義するキーワードです。
  • 関数名: greetUserはこの関数の名前です。自分で分かりやすい名前を付けることができます。
  • 仮引数: 関数に渡す値を受け取るために使います。ここでは$name$ageが仮引数です。
  • echo: 名前や年齢を含む挨拶メッセージを出力しています。
  • PHP_EOL: 改行を表す定数です。異なるOS間で動作を統一するために使います。

標準入力からデータを取得し、関数を呼び出す

echo "年齢を入力してください: ";
$age = (int)trim(fgets(STDIN));

greetUser($name, $age);
  • (int): 取得した値を整数に変換するキャスト操作です。これにより数値として扱えるようになります。
  • 関数の呼び出し: greetUser($name, $age)で定義した関数を実行します。このとき実引数として$name$ageを渡します。

まとめ

このプログラムではPHPにおける関数の基本である「定義」と「呼び出し」を学びました。

関数を使うことで同じ処理を簡単に再利用でき、コードを分かりやすく整理できます。

次のステップとしては戻り値を使った関数や、より複雑なプログラムを作成してみましょう。

関数を活用することで、プログラムがどんどん効率的になっていきます!

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

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

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

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






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