ch02 6章中 2章目

ch02 — 引数を受け取る

スライドで見る

この章を AI と学ぶ

💬 AI に聞く質問例 3 件
  1. 「ch02 — 引数を受け取る」のつまずきやすいポイントを、初学者向けに3つ教えてください

    ChatGPT Claude Gemini

  2. 「ch02 — 引数を受け取る」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)

    ChatGPT Claude Gemini

  3. 「ch02 — 引数を受け取る」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    ChatGPT Claude Gemini

概要

引数 (argument) は 関数の外から中へ値を渡すための入口 だ。引数がない関数は毎回まったく同じ出力しかできないが、function greet($name) のように仮引数を 1 つ用意するだけで、greet("太郎") greet("花子") のように呼び出しごとに違う値を扱えるようになる。「同じ処理だが対象が違う」場面をすべて 1 つの関数に統合できるのが、関数を引数化する最大の動機になる。

PHP では function f($x) { ... }$x仮引数f(10)10実引数 と呼ぶ。仮引数は左から順に対応付けられ、複数並べる場合は ($a, $b, $c) のようにカンマで区切る。実引数を渡し忘れると基本的にエラーになるので、定義側の引数の数と呼び出し側の値の数は揃える必要がある。

このチャプターで覚えておくべき落とし穴は スコープ。仮引数 $name は関数の { } の中だけで有効で、外から echo $name; しても未定義扱いになる。「関数の中の世界と外の世界は別」という感覚を、この段階で掴んでおくと後の $this (class トピック ch05) や static (class-advanced トピック ch06) の理解が一段速くなる。

学習目標

  • function f($x) { ... } で引数 1 個を受け取れる
  • function f($a, $b) { ... } で複数引数を並べられる
  • 呼び出し時に渡した値が関数の中で使える

ドリル

no 内容
01 greet($name) を 3 人分呼ぶ
02 add($a, $b) で合計を出力する
03 describe($name, $age, $city) を作る

解説スライド 全 6 枚

右の ボタン キー(またはスワイプ)で次のスライドに進めます。 下の「縦表示」を開くと全スライドを一気に読めます。

  1. 引数を受け取る

    Lesson 7 / Chapter 2

  2. 引数がないと「同じ出力しかできない」

    <?php
    function greet() {
        echo "こんにちは 太郎\n";
    }
    
    greet();
    • これだと「太郎」しか挨拶できない
    • 名前を変えるたびに関数を書き直すのは無駄
    • 引数 で名前を外から受け取れるようにする
  3. function f($x) { ... } で引数を 1 個受け取る

    <?php
    function greet($name) {
        echo "こんにちは " . $name . "\n";
    }
    
    greet("太郎");
    greet("花子");

    実行結果:

    こんにちは 太郎
    こんにちは 花子
    • ($name)$name引数
    • 呼び出すとき greet("太郎")"太郎"$name に入る
  4. 引数は何個でも並べられる

    <?php
    function add($a, $b) {
        echo $a + $b . "\n";
    }
    
    add(1, 2);  // 3
    add(10, 5); // 15
    • カンマで区切って ($a, $b, $c, ...) のように書く
    • 呼び出すときも同じ数だけ値を渡す
  5. 引数の名前は関数の中だけで有効

    <?php
    function greet($name) {
        echo "こんにちは " . $name . "\n";
    }
    
    greet("太郎");
    echo $name; // ← 関数の外なのでエラー (未定義)
    • 関数の { } の中で受け取った値を使う
    • 外から $name は見えない (スコープ)
  6. このチャプターでできるようになること

    function f($x) { ... } で引数 1 個を受け取れる ✅ function f($a, $b) { ... } で複数引数を並べられる ✅ 呼び出し時に渡した値が関数の中で使える ✅ 引数の値を変えて何度でも呼び出せる

    → ドリルへ

1 / 6
📜 スライドを全部一気に読む(縦表示)

Lesson 7 / Chapter 2


引数がないと「同じ出力しかできない」

<?php
function greet() {
    echo "こんにちは 太郎\n";
}

greet();
  • これだと「太郎」しか挨拶できない
  • 名前を変えるたびに関数を書き直すのは無駄
  • 引数 で名前を外から受け取れるようにする

function f($x) { ... } で引数を 1 個受け取る

<?php
function greet($name) {
    echo "こんにちは " . $name . "\n";
}

greet("太郎");
greet("花子");

実行結果:

こんにちは 太郎
こんにちは 花子
  • ($name)$name引数
  • 呼び出すとき greet("太郎")"太郎"$name に入る

引数は何個でも並べられる

<?php
function add($a, $b) {
    echo $a + $b . "\n";
}

add(1, 2);  // 3
add(10, 5); // 15
  • カンマで区切って ($a, $b, $c, ...) のように書く
  • 呼び出すときも同じ数だけ値を渡す

引数の名前は関数の中だけで有効

<?php
function greet($name) {
    echo "こんにちは " . $name . "\n";
}

greet("太郎");
echo $name; // ← 関数の外なのでエラー (未定義)
  • 関数の { } の中で受け取った値を使う
  • 外から $name は見えない (スコープ)

このチャプターでできるようになること

function f($x) { ... } で引数 1 個を受け取れる ✅ function f($a, $b) { ... } で複数引数を並べられる ✅ 呼び出し時に渡した値が関数の中で使える ✅ 引数の値を変えて何度でも呼び出せる

→ ドリルへ

この章で取り組む 演習問題の流れ (3ステップ)
  1. 01 ドリル 01 — greet($name) を 3 人分呼ぶ README.md starter.php answer.php
  2. 02 ドリル 02 — add($a, $b) で合計を出力 README.md starter.php answer.php
  3. 03 ドリル 03 — describe($name, $age, $city) を作る README.md starter.php answer.php

演習問題の詳細

この章の演習問題の内容を読めます。実際に手元で解くには教材リポジトリを clone してください。

ドリル 01 — greet($name) を 3 人分呼ぶ

問題

引数 $name を 1 個受け取って こんにちは <name> さん を 1 行出力する関数 greet を定義してください。

定義した後、次の 3 人分の挨拶を順に呼んでください。

  • 太郎
  • 花子
  • 次郎

期待される出力:

こんにちは 太郎 さん
こんにちは 花子 さん
こんにちは 次郎 さん

ヒント

  • function greet($name) { ... }
  • 中で echo "こんにちは " . $name . " さん\n";
  • 下で greet("太郎"); greet("花子"); greet("次郎");

🧪 ブラウザで試す

スライドのコードを写経して ▶ 実行、自分で書いて 📝 採点 で答え合わせ。初回のみ PHP ランタイム読込で数秒かかります。

PHP ランタイム未読込

          

        

ドリル 02 — add($a, $b) で合計を出力

問題

引数 $a$b を受け取り、その合計を 1 行出力する関数 add を定義してください。

定義した後、標準入力から 2 行 (1 行に 1 つの整数) を読み、add を 1 回呼んで合計を出力してください。

入力例:

3
7

期待される出力:

10

ヒント

  • function add($a, $b) { echo $a + $b . "\n"; }
  • $a = (int) trim(fgets(STDIN));
  • $b = (int) trim(fgets(STDIN));
  • add($a, $b);

🧪 ブラウザで試す

スライドのコードを写経して ▶ 実行、自分で書いて 📝 採点 で答え合わせ。初回のみ PHP ランタイム読込で数秒かかります。

PHP ランタイム未読込

          

        

ドリル 03 — describe($name, $age, $city) を作る

問題

引数 $name$age$city を受け取り、次の形式で 1 行出力する関数 describe を定義してください。

<name> ( <age> ) - <city>

定義した後、次の 2 件を順に呼んでください。

  • 太郎, 20, 東京
  • 花子, 25, 大阪

期待される出力:

太郎 ( 20 ) - 東京
花子 ( 25 ) - 大阪

ヒント

  • function describe($name, $age, $city) { ... }
  • 中で echo $name . " ( " . $age . " ) - " . $city . "\n";
  • 下で describe("太郎", 20, "東京"); のように呼ぶ

🧪 ブラウザで試す

スライドのコードを写経して ▶ 実行、自分で書いて 📝 採点 で答え合わせ。初回のみ PHP ランタイム読込で数秒かかります。

PHP ランタイム未読込

          

        

演習問題(3問)

  1. ドリル 01 — greet($name) を 3 人分呼ぶ

    README.md starter.php answer.php

  2. ドリル 02 — add($a, $b) で合計を出力

    README.md starter.php answer.php

  3. ドリル 03 — describe($name, $age, $city) を作る

    README.md starter.php answer.php

サイト内で問題文・雛形・解答例を確認できます。実際に手元で解くには教材リポジトリを clone してください。

完了にすると進捗に反映されます