関数はいくつかの処理をひとまとめにしたものです。データを与えると結果を返すという機能を持ちます。与えるデータのことを引数、結果のことを戻り値または返り値といいます。
練習にmb_strlenという関数を使ってみましょう。この関数はカッコ内の引数で渡した文字列の文字数を数えて、結果を戻り値に返します。
引数のない関数
関数によっては引数のないものもあります。例えば、time関数です。これはサーバーのタイムスタンプを返り値とする関数のため、引数を与える必要はありません。
$now_time = time();
返り値を使わない関数
関数の中で処理をするものの、返り値を使わない関数もあります。例えば配列の並び替え(ソート)を行うsort関数は、引数に指定した配列のソートを行うます。
自作関数の作り方
もともと存在する関数のことをビルトイン関数といいます。一方、自作で関数を作ることもできます。 それをファンクション構文といいます。
function 関数名(引数、引数・・){ 処理内容 return 返り値; }
デフォルト引数のある関数
関数によっては「引数はあってもなくてもいい、でもない場合は関数側から指定しておきたい」という場面もあります。
この関数側から指定する、仮の値のある引数のことをデフォルト引数といいます。次のプログラムは、「引数で渡された文字列を表示するが、引数がない場合にはデフォルト引数の文字列を表示する」というものです。
引数に”鈴木”が入っているプログラムには”鈴木”と表示。引数に何も入っていない6行目プログラムには”田中”が入る。
項目を設定して関数を作ってみましょう。
500円ワンコイン自動販売機の関数を作ってみます
- 関数名は「food_machine」
- 引数は「金額」と「食べ物の名前」
- 金額が500円以上なら、購入できたメッセージを表示する
- 金額が500円未満なら、購入できなかったメッセージを表示する
関数の切り出し
たくさん関数を作った時には、見やすいように別のファイルに関数をまとめておくといいでしょう。別のファイルに定義して、関数と利用するプログラムを切り離しておくことで、複数のプログラムから簡単に関数を呼び出せるようになります。
そこで、includeという関数を用います。これは引数に指定したファイルを読み込む関数です。
それではやってみましょう!まずは下記のような内容でfood_machine.phpというファイルを作っておきます。
そうしましたら別のファイルでincludeを使用してfood_machine.phpを読み込みます。
変数のスコープ
変数の有効範囲のことをスコープと呼びます。
例えば関数範囲で変数が定義されていても、プログラムのメインの部分で変数定義されていなければ関数範囲とメインの部分でスコープが違いエラーとなります。例を見てみましょう。
print_nameは呼び出すと文字列を出力する関数です。関数内で$nameに名前を代入し、その$nameを使って出力しています。プログラムのメイン部分「print_name()」の1行目で関数を呼び出すと、しっかり実装されています。しかし、メイン部分のecho $nameの2行目ではエラー表示が出ています。
メインのプログラム部分では$nameを定義しておらず、関数内の$nameはスコープが違うためです。そのため$nameは未定義とのエラー表示が出てしまっているのです。関数内で作成した変数は、関数内でしか使えません。また関数を呼び出すには「関数名()」として呼び出すことが必要です。
PHPマニュアル
PHPでプログラムを書くには、もともと存在する関数(ビルトイン関数)を使いこなすことがレベルアップにつながります。そこで関数の使い方を確認するのに便利なPHPマニュアルが役立ちます。下記ご参考までに。
https://www.php.net/manual/ja/