PHP超入門コース#12 関数

はじめに

こんにちは。キノコードです。
「PHP超入門コース#12 関数」について説明します。

関数とは?

この動画では、「関数」について説明します。
説明する内容はこちらです。
まず、関数について説明します。
関数とは、「処理」のことです。
なぜ関数があるのでしょうか?
料理で例えてみます。
例えば、いつも作るカレーがあるとします。
そのレシピを料理ロボットに記憶してもらいます。
またカレーが食べたくなったときに、
ボタン1つで作れる。
しかも、その料理ロボットは、自分も使えるし、家族も使える。
その料理ロボットが関数なのです。
関数の便利なところは、3つあります。
1つめは、同じものを2回書く必要がなくなること。
2つめは、同じものを他の場面でも使えること。
3つめは、他の人も使うことができることです。
関数の中のコードを理解していなくても他の人も使うことができる
といった便利な点です。
関数を作ることを「関数の宣言」といいます。
PHPでの関数の宣言方法についてみていきましょう。
function 関数名( ) {
実行する処理
}
PHPでは関数の定義にfunctionを使います。
functionの後に関数につける名前を書き、丸括弧を書きます。
関数に引数を渡したい場合は、丸括弧のなかに引数名を書きます。
引数は、何個でも渡すことができるので、必要な分だけカンマで区切って入れることができます。
最後に{ }波括弧を書いて、波括弧のなかに実行する処理を書きます。
それでは、実際に、コードを書いてみましょう。

関数の宣言と実行

あいさつを表示する関数を作成しましょう。


<?php

  function say_hello() {
    echo "Hello World"."\n";
  }
  say_hello();

文字列の「Hello World」を表示する関数を作成しましょう。
まずは function、そのあとに関数名を書きましょう。
関数名はメッセージを表示する意味を持つ「say_hello」を書きます。
今回、引数はないので丸括弧のみを書きます。
波括弧を書いて、実行する処理を書きます。
これで関数を定義することができました。
関数を実行するには、関数名、丸括弧を記述することでできます。
関数名の「say_hello」に引数なしの丸括弧。これで「Hello World」が表示されるはずです。
実行してみましょう。
「Hello World」を表示することができました。


<?php

  function say_hello() {
    echo "Hello World"."\n";
  }
  say_hello();
  say_hello();
  say_hello();

定義した関数は何回でも呼び出すことができます。
3回say_hello();を実行します。
「Hello World」は3回表示されるはずです。
実行してみましょう。
「Hello World」を3回表示することができました。

関数の代入方法

PHPは関数を変数に代入することができます。
関数を変数に代入する書き方について見ていきましょう。
変数名 = function() {
実行する処理
};
変数名、イコール、functionを書きます。
関数に変数を代入するときは関数名を書きません。
これを無名関数といい、関数名を書かずに関数を作成することができます。
続いて、丸括弧、波括弧、実行する処理を書きます。
波括弧の後に「;」(セミコロン)が必要なので、注意しましょう。
関数を変数に代入して、あいさつを表示してみましょう。

<?php

  $say_hello = function() {
    echo "Good Morning"."\n";
  };
  
  $say_hello();
 

変数名はあいさつという意味の「say_hello」としましょう。
function、丸括弧。丸括弧の中には引数を書くことができます。
波括弧を書いて、実行する処理を書きます。今回は挨拶を表示するので、「echo “Good Morning”.”\n”;」です。
波括弧の後に「;」(セミコロン)を書きます。
関数を実行するときは、変数名、丸括弧を書きます。
変数名の「$say_hello」に丸括弧を書きます。
実行してみましょう。「Good Morning」が表示されました。

引数がある関数

引数がある関数についてみていきましょう。
関数名のあとに丸括弧の中に引数を書いて、引数に書いた内容を表示するプログラムを記述していきましょう。
引数名はあいさつの「greeting」としましょう。
「say_hello」の丸括弧の中に「greeting」を書きましょう。
そして、受け取った引数をechoで表示させましょう。
関数を呼び出すところの引数に、ダブルクォーテーションで「”Good Morning”」を渡してみましょう。

<?php

  function say_hello($greeting) {
    echo $greeting."\n";
  };

  say_hello("Good Morning");
 


実行してみます。
「Good Morning」が表示されました。

<?php

  function say_hello($greeting) {
    echo $greeting."\n";
  };

  say_hello("Good Morning");
  say_hello("Good afternoon");
  say_hello("Good evening");
 

次に、引数の値を変更して、表示する内容を変えてみましょう。
引数に「Good afternoon」と「Good evening」を書いて、実行してみましょう。
「Good afternoon」と「Good evening」も表示することができました。

<?php

  function cal($x) {
    echo ($x * 3)."\n";
  };
  
  cal(6);
 

今度は、関数に数値を渡して、関数内で計算と表示をさせてみます。
この関数は計算をさせるので、関数名は計算という意味のcalculateの前3文字をとったcalという関数名にします。
引数名はxとしましょう。
その引数を関数内で掛け算してみましょう。
xかける3をechoで表示させてみます。
xに6を渡してみましょう。
実行してみます。
18が表示されました。

複数の引数がある関数

<?php

  function cal($x, $y) {
    echo ($x / $y)."\n";
  };
  
  cal(6, 3);
 

引数を2つにしてみましょう。
引数が2つにする場合、カンマで区切れば良いです。
引数は、何個でも渡すことができるので、必要な分だけカンマで区切って入れることができます。
yという引数を定義します。
x割るyとして、これを表示させてみましょう。
xに6、yに3を渡します。
実行してみましょう。
2となり、予想通りの結果となりました。

戻り値がある関数

<?php

  function cal($x, $y) {
    return $x / $y;
  };
  
  $result = cal(6, 3);
  echo $result."\n";
 

次に、戻り値がある場合の関数をみていきたいと思います。
戻り値がある場合は、関数内で処理した結果を受けることができます。
例えば、先ほどやった「x / y」の計算結果を返す場合、echoではなく、returnを記述します。
実行結果を受け取るために、resultという変数に代入しましょう。
そして、resultを表示させてみます。
実行してみます。
2が表示されました。
ところで、関数内で表示させる処理と、戻り値を受け取った値を表示させる処理とでは、どのような違いがあるのでしょうか。
どちらも表示するという点は同じです。
違いは、リターンで戻り値を受け取って表示させるかどうかです。では、リターンの意味は、どんなところにあるのでしょうか?
戻り値がない関数は、関数内で処理した結果を返すことができません。
一方、戻り値がある関数は、関数内で処理した結果を返すことができます。そのため、受け取った結果をさらに計算したり文字列とくっつけたりすることができます。
例えば、足し算をする関数で計算した結果を、さらに引き算をする関数で計算することができます。
しかし、関数内で単に表示させる処理では、関数の結果を返すわけではないです。したがって、計算結果をさらに違う関数に渡すことはできません。
このように、戻り値がない場合と戻り値がある場合では使い方が変わってきます。
どちらの関数もよく使うので、必要に応じて使い分けてみてください。
レッスンは以上です。

確認問題

それでは確認問題です。
calという関数を作り、10と5と8の引数を渡します。
足し算の結果を変数に代入して、結果を返してください。
そして、関数の外側で計算結果を表示させてみてください。
動画をストップし、記述してみてください。

<?php

  function cal($a, $b, $c) {
    return ($a + $b + $c) / 3;
  };
  
  $result = cal(9, 4, 2);
  echo $result."\n";
 

まず、calという関数を作ります。
私は、引数はxとyとzとしました。
「a + b + c」の計算結果をreturnで返します。
実行結果をresultという変数に代入して、その変数を表示させます。
実行してみましょう。
23が表示されました。
これで関数のレッスンは終わりです。
お疲れ様でした!