1. 関数とは?
関数とは、特定の処理をひとまとめにして、必要なときに呼び出して使えるようにする仕組みです。再利用性が高まり、コードの可読性・保守性が向上します。
メリット:再利用・短いコード・修正が容易・バグの局所化
身近な例:料理のレシピ — 一度作ったレシピを材料を変えて何度でも使える。
2. PHP の組み込み関数(代表例)
用途別の代表的な関数と短い実行例を示します。
文字列
| 関数名 | 説明 | 例 |
|---|---|---|
strlen() |
文字数を返す | strlen("PHP") → 3 |
strtoupper() |
大文字にする | strtoupper("php") → "PHP" |
substr() |
部分文字列を抜き出す | substr("apple",1,3) → "ppl" |
数値
| 関数名 | 説明 | 例 |
|---|---|---|
round() |
四捨五入 | round(3.6) → 4 |
max() |
最大値 | max(3,9,2) → 9 |
配列
| 関数名 | 説明 | 例 |
|---|---|---|
count() |
要素数を返す | count([1,2,3]) → 3 |
array_merge() |
配列を結合 | array_merge([1,2],[3,4]) → [1,2,3,4] |
日付と時間
| 関数名 | 説明 | 例 |
|---|---|---|
date() |
現在の日付を文字列で取得 | date("Y-m-d") → "2025-11-20" |
time() |
Unixタイムスタンプを返す | time() → 1732100000(例) |
3. 自分で作る関数(ユーザー定義関数)
基本構文:
|
1 2 3 4 |
function 関数名(引数1, 引数2, ...) { // 処理 return 戻り値; } |
例:2つの数の合計を返す関数
|
1 2 3 4 5 |
function add($a, $b) { return $a + $b; } echo add(3, 5); // 8 |
4. 引数(パラメータ)とデフォルト値
引数は関数に渡す「入力値」です。引数にデフォルト値(初期値)を設定できます。
|
1 2 3 4 5 6 |
function greet($name = "ゲスト") { echo "こんにちは、{$name}さん!"; } greet(); // こんにちは、ゲストさん! greet("花子"); // こんにちは、花子さん! |
5. return と echo の違い
echo:画面に表示する(出力)
return:関数の「結果」を呼び出し側に返す(表示はしない)
|
1 2 3 4 5 6 |
function double($num) { return $num * 2; } $result = double(4); // $result に 8 が入る echo $result; // 8 |
6. 変数のスコープ(有効範囲)
関数内で宣言した変数は関数外から見えません(ローカル)。外の変数を関数内で使う場合は global を使いますが、頻繁な使用は設計上あまり推奨されません。
|
1 2 3 4 5 6 7 8 9 10 |
$x = 10; function foo() { $y = 5; // ローカル変数 global $x; echo $x; // 10 } foo(); echo $y; // エラー:$y は関数の外からは見えない |
7. 可変長引数(...$args)
引数の数が不定の関数を作れます。渡された引数は配列として受け取られます。
|
1 2 3 4 5 |
function sum(...$numbers) { return array_sum($numbers); } echo sum(1,2,3,4); // 10 |
8. 無名関数 / クロージャ / アロー関数
関数に名前をつけずに変数に代入して使えます。アロー関数は短い記法(PHP 7.4+)。
|
1 2 3 4 5 6 7 8 |
$double = function($n) { return $n * 2; }; echo $double(3); // 6 $double2 = fn($n) => $n * 2; echo $double2(3); // 6 |
9. 実践ミニ課題(演習)
下の問題を実装してみてください。模範解答は授業で提示するか、別ファイルで配布してください。
問題1:税込金額(10%)を返す関数を作成。例:1000 → 1100
|
1 2 3 |
function withTax(int $price): int { // ここに実装 } |
問題2:文字列を逆にする関数(
strrev() を使わず実装しても可)|
1 2 3 |
function reverseString(string $s): string { // ここに実装 } |
問題3:配列の最大値を返す関数(組み込み
max() を使わずに実装しても可)|
1 2 3 |
function maxOfArray(array $arr) { // ここに実装 } |
問題4:ログ出力用関数。引数はメッセージの文字列。返す文字列は次の形式:
|
1 |
[YYYY-MM-DD HH:MM:SS] メッセージ |
例:[2025-11-20 12:34:56] アプリを起動しました
補足:教えるときのポイント
- 最初は「関数 = レシピ」のアナロジーで導入する。
- 短いコードサンプルを見せて、その結果を実際に実行して見せる(ライブコーディング推奨)。
returnとechoの違いを必ず説明する。- スコープはバグの温床になりやすいので、演習で確かめさせる。
- 中級として無名関数やアロー関数を軽く触れる。

コメント