今回は関数の復習。
基本コード
<?php
function add($a, $b)
{
return $a + $b;
}
関数の基本ポイントはこんな感じ
- スコープの範囲はグローバル
- 関数名は大文字・小文字を区別しない(add関数はadd、Add、ADDで呼び出せる)
- 関数のオーバーロードはない
- 宣言した関数は取り消し・再定義が不可
- 可変引数・デフォルト引数を使うことができる
関数の引数
参照渡し
準備中
引数にデフォルト値を設定する
準備中
可変長引数を受け取る
… トークンを使う:PHP 5.6以降
引数に…をつけることでその引数は可変長引数として扱われる。引数は配列として渡ってくる。
まずは可変長引数1つの関数を定義したサンプルを作ってみる。
引数で渡した文字列を結合して表示してみます。
コード
<?php
// 可変長引数のみを引数として受け取る
function str_combine(...$strings)
{
$str = '';
foreach ($strings as $s)
{
$str .= $s;
}
echo $str, "\n";
}
str_combine('a', 'b', 'c');
結果
abc
可変長引数は通常の引数と組み合わせて使うこともできる。
第三引数を可変長引数に指定したサンプルを作ってみます。
コード
<?php
function str_combine($prefix, $suffix, ...$strings)
{
$str = '';
foreach ($strings as $s)
{
$str .= $s;
}
$str = $prefix . $str . $suffix;
echo $str, "\n";
}
str_combine('prefix-', '-suffix', 'a', 'b', 'c');
結果
prefix-abc-suffix
再帰的に関数を呼ぶ
関数の中で関数を呼び出すアレ。

なプ
ポインタと並んで最初の壁となることが多いっすよね!
よく見る例として、階乗計算の再帰関数を作ってみる。
コード
<?php
function factorial($x)
{
if ($x == 0)
{
return 1;
}
return factorial($x - 1) * $x;
}
$result = factorial(5);
echo $result, "\n";
結果
120
5の階乗の計算結果は、5 * 4 * 3 * 2 * 1 = 120なので合っていますね。
参考
PHP: ユーザー定義関数 - Manual
PHP: 関数の引数 - Manual