B280 関数宣言と呼び出し

PHPでは関数を作成することができます。関数を定義しておけば、その後は関数を呼び出すだけで、関数内に記述された処理をまとめて呼び出すことができます。プログラミングでは必須の技術です。
今回は、PHP にて関数を定義する方法とその呼び出し方について紹介します。

関数宣言と呼び出し

function 関数名(引数) { 処理 }という形を用いて関数を定義します。また、関数を呼び出す際は、関数名();という形を用いて関数を呼び出します。

PHP
function outPut() {
  echo 'こんにちは';
};
//outPut()関数の定義

outPut();
//outPut()関数の呼び出し

出力結果

PHP
こんにちは

関数のスコープ

関数スコープ

スコープとは、ある変数や関数が特定の名前で参照される範囲のことを指します。functionの中に置かれた変数や関数は、その内部でしか変更、参照をすることはできません。

PHP
function funcA () {
  function funcB() {
    echo 'funcB';
  }
  funcB();
}

funcB();

出力結果

PHP
PHP Fatal error:  Uncaught Error: Call to undefined function funcB()
// 関数FuncBは定義されておりません。

例題

以下コードの出力値はどれか

PHP
function hello () {
  echo 'Hello';
  function greeting() {
    echo 'こんにちは!';
  }
  greeting();
}

hello();
  1. ReferenceError: greeting is not defined
  2. Hello こんにちは!
  3. ReferenceError: hello is not defined
  4. こんにちは! Hello
回答

2. Hello こんにちは!
hello関数を実行し、”Hello”が出力され、greetingが実行され、”こんにちは”が出力されるため。

エンジニアからのアドバイス

B060 変数の種類と有効範囲 や今回の「関数のスコープ」で学んだ通り、関数はローカルスコープです。つまり、関数内で変数の値を変えても、関数の外側と値を共有できません。
「関数の外側から値を受け取って、関数内の処理をしたあと、その結果の値を返したい」と考えているときには「呼び出し元から受け取る値」「呼び出し元に返す値」を渡してあげる必要があります。
こういった場合は、関数の宣言で必要な情報は以下となります。

プログラミングでは「呼び出し元から受け取る値」「呼び出し元に返す値」を以下の名前で呼んでいます。
呼び出し元から受け取る値 = 引数
呼び出し元に返す値    = 戻り値

PHP
function outPut($hello) {
  $say = 'say ' . $hello;
  return $say;
};
//outPut()関数の定義( $hello = 引数, return $say = 戻り値 )

echo (outPut('こんにちは') );
//outPut()関数の呼び出し

「引数」「戻り値」については次ページ以降にて説明しています。

---