😄

PHPの関数についてのメモ

2024/09/21に公開

関数

PHPの関数についてのメモ

PHPのバージョン v8.x

概要

  • 処理のひとまとまりのプログラム
  • 呼び出すことによって実行される
  • 再利用が可能

PHPによって用意されている関数を組み込み関数、ユーザーが実装して利用する関数をユーザー定義関数という

基本の書き方

function EchoHelloWorld()
{
  echo "Hello World";
}

// 結果
// Hello World
BaseFunction() 

引数

入力を受け取る変数をパラメータ、関数から返される(出力)される値を返り値という。

実引数が仮引数より多い場合はエラーは発生せず、多い分は無視されるが少ないとUncaught ArgumentCountError: Too few arguments to functionというエラーが発生する。

date_default_timezone_set("Asia/Tokyo");

function EchoHelloWorld($now, $fname)
{
  echo "$fname<br />";
  echo "Hello World<br />";
  echo $now;
}

// 結果
// John
// Hello World
// 2024/09/21 11:24:43am
EchoHelloWorld("John", date("Y/m/d h:i:sa"));

デフォルト引数

デフォルト値を設定する。
引数なしで関数を呼び出すことができる。途中の引数だけ省略するということは不可能

date_default_timezone_set("Asia/Tokyo");

function EchoHelloWorld($now, $fname = "John")
{
  echo "$fname<br />";
  echo "Hello World<br />";
  echo $now;
}

// 結果
// John
// Hello World
// 2024/09/21 11:24:43am
EchoHelloWorld(date("Y/m/d h:i:sa"));

Return

公式ドキュメント

return は、プログラムの制御を呼び出し元に戻します。 呼び出し側のモジュールでは、呼び出しの次の式から続行します。
関数内で呼び出されると、return文は即座に その関数の実行を停止し、引数を関数の値として返します。 returnはまた、eval()文や スクリプト自体の実行を終了させることが出来ます。

date_default_timezone_set("Asia/Tokyo");

function EchoHelloWorld($now, $fname = "John")
{
  $str = "$fname<br />" . "Hello World<br />" . $now;

  return $str;
}

// 結果
// John
// Hello World
// 2024/09/21 11:24:43am
echo EchoHelloWorld(date("Y/m/d h:i:sa"));

可変長引数

...パラメーター名を使用することで未知の数の引数を受け取ることができる。=> 配列

1つだけ指定することができ、必ず最後の引数でなければならない。

function EchoHelloWorld($name, ...$params)
{
  echo $name . "<br />";
  // 可変長引数をカウント
  echo count($params) . "<br />";
  // 順番に表示
  for($i = 0; $i < count($params); $i++) {
    echo $params[$i] . "<br />";
  }
}

echo EchoHelloWorld("John", "Apple", "Book", "Core", "Design", "Electron");

// 結果
// John
// 5
// Apple
// Book
// Core
// Design
// Electron

ネスト

入れ子になった関数を呼び出すには親関数を先に呼び出す必要がある

function EchoHelloWorld()
{
  function EchoGoodMorning()
  {
    echo "Good Morning";    
  }
  echo "Hello World<br />";
}

EchoHelloWorld();
EchoGoodMorning();

// 結果
// Hello World
// Good Morning
GitHubで編集を提案

Discussion