【6日でできるPHP入門】さまざまな関数

 前の記事では関数の概念とユーザー定義関数の基本を学びました。本章ではそれを一歩進め、「さまざまな関数」を実際に作りながら“戻り値を返す関数”“画面に出力するだけの関数”“デフォルト引数や可変長引数を持つ関数”など多彩なパターンを体験します。

1.戻り値を活用する関数

1.1. 最小値を返す min_value

ファイル名: lesson44_1.php

<?php
// 2 つの数の小さい方を返す
function min_value($a, $b){
    return ($a < $b) ? $a : $b;
}

// 呼び出し
$n1 = 7; $n2 = 10;
echo "*** min_value 関数 ***<br>";
echo "{$n1} と {$n2} の小さい方は " . min_value($n1, $n2) . " です。<br>";
?>

実行結果

1.2. べき乗を計算する power_of

ファイル名: lesson44_2.php

<?php
// 第 2 引数を省略したら 2 乗を計算
function power_of(float $base, int $exp = 2): float{
    return pow($base, $exp); // pow は組み込み関数
}

echo "*** power_of 関数 ***<br>";
echo "3 の 2 乗は " . power_of(3) . " です。<br>";
echo "2 の 5 乗は " . power_of(2, 5) . " です。<br>";
?>

実行結果

主な PHP 命令役割
return戻り値を指定すると同時に関数を終了する。
pow()底と指数を受け取り、べき乗を返すビルトイン関数
echo文字列をブラウザに出力する。

2.画面出力系の関数

2.1. 絵文字を繰り返し表示する draw_emojis

ファイル名: lesson44_3.php

<?php
// 指定回数だけ絵文字を表示し、改行して終了
function draw_emojis(int $count, string $emoji = "🌟"){
    for($i = 0; $i < $count; $i++){
        echo $emoji;
    }
    echo "<br>";
    // 戻り値は不要なので return 省略も可
}

// 呼び出し例
echo "*** draw_emojis 関数 ***<br>";
draw_emojis(4);       // 🌟🌟🌟🌟
draw_emojis(6, "🎈"); // 🎈🎈🎈🎈🎈🎈
?>

実行結果

2.2. あいさつを行う greet_user

ファイル名: lesson44_4.php

<?php
// 名前を受け取り「こんにちは」を表示
function greet_user(string $name = "ゲスト"){
    echo "こんにちは、{$name} さん!<br>";
}

echo "*** greet_user 関数 ***<br>";
greet_user("田中");
greet_user(); // デフォルト引数が適用
?>

実行結果

ループ関連命令説明
for (初期化; 条件; 更新)指定回数ループさせる基本構文
$i++インクリメント演算子。変数の値を 1 増やす。

3.発展的テクニック

3.1. 可変長引数で合計を求める sum_all

ファイル名: lesson44_5.php

<?php
function sum_all(...$nums): int{
    return array_sum($nums); // 配列の合計を返す
}

echo "*** sum_all 関数 ***<br>";
echo "合計: " . sum_all(1, 2, 3, 4, 5) . "<br>"; // 15
?>
新しい構文説明

function sum_all(...$nums): int{
関数sum_allを定義。...$nums可変長引数(任意個の引数を配列として受け取る)を意味し、返り値の型がint(整数)であることも明示しています。
...$nums可変長引数。呼び出し側で与えた値が配列として受け取れる。
array_sum()配列要素をすべて加算するビルトイン関数

実行結果

まとめ

  • 戻り値を返す関数は計算結果などを呼び出し元へ渡せるため、ロジックを部品化できる。
  • 出力専用の関数は画面描画のコードを一箇所に集約し、HTML を整形しやすい。
  • デフォルト引数・可変長引数を活用すると、呼び出しインターフェースが柔軟になる。
  • return, echo, 制御構文(if, for)などの基本命令を正しく理解すると、どんな関数も自在に設計できる。