【PHP】引数 - 仮引数と実引数で関数に値を与える

【PHP】引数 - 仮引数と実引数で関数に値を与える

関数に値を与える“引数”と呼ぶ仕組みがあります。

標準入力やコマンドライン引数のように処理の外部から値を与えることで、値に依存しない汎用性高い関数を作ることができます。

ここでは、引数について解説します。

検証環境

引数

引数は“関数に値を与える仕組み”です。

関数の外部から値を与えることができるようになるため、汎用性の高い関数を実現できます。

引数を使うには、“関数の定義”に仮引数、“関数の呼び出し”に実引数を記述します。

仮引数

仮引数は“関数で値を受け取る変数”です。

仮引数変数とも呼び、基本的には通常の変数と同じですが、関数のブロック(波括弧{})内のみで使用可能な変数になります。

基本構文

function 関数名( 仮引数1, 仮引数2 ... ) {
    処理
}

関数の定義において、丸括弧(())内に仮引数を記述します。

仮引数は変数のため、通常の変数と同様に$に続いて変数名を付けます。

また、複数使う場合はカンマ(,)区切りで記述できます。

サンプル

<?php

___ih_hl_start
function addition( $x, $y ) {
    $result = $x + $y;
    echo $x . ' + ' . $y . ' = ' . $result . "\n";
}
___ih_hl_end

?>
$ php sample.php
$ 

3〜6行目が引数がある関数の定義です。

仮引数に$x$yを定義しています。

実引数

実引数は“関数に与える値”です。

基本構文

関数名(実引数1, 実引数2 ...)

関数の呼び出しにおいて、丸括弧内に実引数を記述します。

実引数は値であれば良いので、変数なども使用可能です。

また、複数値を与える場合は、カンマ区切りで記述します。

サンプル

<?php

function addition( $x, $y ) {
    $result = $x + $y;
    echo $x . ' + ' . $y . ' = ' . $result . "\n";
}

___ih_hl_start
addition(3, 8);
___ih_hl_end

?>
$ php sample.php
3 + 8 = 11

8行目が引数がある関数の呼び出しです。

38の値を関数に与えており、それぞれ前から順番に仮引数$x$yに記憶されます。

また、関数の呼び出しごとに実引数を変えることも可能です。

<?php

function addition( $x, $y ) {
    $result = $x + $y;
    echo $x . ' + ' . $y . ' = ' . $result . "\n";
}

addition(3, 8);
___ih_diff_start
+addition(11, 33);
+addition(1234, 5678);
___ih_diff_end

?>
$ php sample.php
3 + 8 = 11
11 + 33 = 44
1234 + 5678 = 6912

同じ関数を呼び出していますが、実引数が異なるため、関数の処理結果も変わります。

このように引数を使うことで、値に依存しない関数を作れるため、汎用性高いプログラムを実装できます。

演習問題

問題1

2つの値の四則演算結果を出力するプログラムを作成してください。
なお、下記条件を満たすものとします。

  • 2つの値は標準入力で与える
  • 四則演算とその結果の出力は関数にする
$ php practice.php
number1 > 9
number2 > 4
9 + 4 = 13
9 - 4 = 5
9 * 4 = 36
9 / 4 = 2.25
$ php practice.php
number1 > 5
number2 > -3
5 + -3 = 2
5 - -3 = 8
5 * -3 = -15
5 / -3 = -1.6666666666667
$ php practice.php
number1 > 8
number2 > 0
8 + 0 = 8
8 - 0 = 8
8 * 0 = 0
8 / 0 = ----

問題2

BMIと肥満度を出力するプログラムを作成してください。
なお、下記条件を満たすものとします。

  • BMIの計算式は『体重(kg)÷ (身長(m))2』とする
  • BMIの計算は関数にする
  • 体重と身長は標準入力で与える
  • 肥満度は次の表の通りとする
BMI 肥満度
18.5未満 低体重
18.5以上、25.0未満 標準体重
25.0以上、30.0未満 肥満(レベル1)
30.0以上、35.0未満 肥満(レベル2)
35.0以上、40.0未満 肥満(レベル3)
40.0以上 肥満(レベル4)
$ php practice.php
体重(kg) > 50
身長(cm) > 155
BMI = 20.811654526535
肥満度:標準体重
$ php practice.php
体重(kg) > 47
身長(cm) > 168
BMI = 16.652494331066
肥満度:低体重