[PHP] 関数

Nプログラマです。

今回は関数の復習。

基本コード

<?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
タイトルとURLをコピーしました