こんにちは、ryohei(@ityryohei)です!

PHPには多くの関数が予め定義されていますが、自分で好きなように関数を定義することもできます。それをユーザー定義関数と言います。

関数の定義にはfunctionを使用します。
(functionはそのまま関数という意味です!)
functionの後に定義したい関数の名前を付け、中に処理内容を記述します。
記述方法としては以下のようになります。

<?php

  function 関数名(){
    処理内容
  }

?>
One Point

関数名には変数名と同じように半角英数字とアンダースコアを使用します。また、関数名の先頭に数字を付けるとエラーになりますのでご注意を!

PHPはファイルに記述された処理内容を上から順に解釈し、実行する言語です。
そのため、行数が多くなるにつれて読みにくくなり、同じような処理を実行している部分が増えていきます。必然、見晴らしも悪くなります……。

しかし、ユーザー定義関数は、定義した関数であれば基本的に好きな場所で呼び出し、実行することができます。
また処理を一つにまとめることができるため、一度定義してしまえば同じ処理を何度も記述する必要がありません。
処理の中でバグが見つかった場合も定義した関数を確認するだけで良いので、保守も楽になります。結果的に処理内容が把握しやすくなり、負担も減りますね!

定義した関数を実行するには、関数名の後に「();」を付けて記述します。

<?php

  function 関数名(){
    処理内容
  }

  関数名();

?>

ちなみに定義した関数より前に記述しても動作します。

<?php

  関数名();

  function 関数名(){
    処理内容
  }

?>

では試しに自分の名前を呼び出す関数を定義して実行してみましょう!

<?php

  function print_name(){
    echo "Ryohei";
  }

  print_name();

?>

関数の入れ子

また、PHPでは関数の入れ子(ネスト)が可能です。
関数の中に別の関数を記述して、関数の中で呼び出すことができます。

単純な処理ですが、関数の入れ子を記述すると以下のようになります。

<?php

  function print_name1(){
    echo "Ryohei"."<br />";

    function print_name2(){
      echo "Ryoji";
    }
    print_name2();
  }
  print_name1();

?>

上記のプログラムでは、print_name1という関数の内部にprint_name2という別の関数を持たせて、print_name1が呼び出されたら内部でprint_name2の実行を行っています。