【PHP超入門】ユーザー定義関数の基礎の基礎 | function・return

PHPではJavaやCのようなブログラミング言語同様に、自分で定義した関数(function)を作成することができます。

この記事では、

・関数とは
・関数の使い方

という関数の基本的な使い方を解説し、

・return(返り値)とは
・returnの基本的な使い方

で関数の返り値の指定方法を解説いたします。

今回はそんな関数や返り値の使い方について、わかりやすく解説します!

関数とは

関数とは値を演算したり、条件分で判断したり、データを登録したりなど、特定の動作をまとめて入れておく箱のようなイメージです。

PHPでは関数は大きく分けて2つあります。

・組み込み関数
PHPで提供している関数(配列を結合するarray_merge関数や文字列検索を行うstrposなど)。

・ユーザー定義関数
ユーザーが独自に処理を記述した関数。

この記事では主に後者のユーザー定義関数について解説していきます。

ユーザー定義関数はfunctionを指定することで、使用することができます。

関数の書き方

ユーザー定義関数(function)は以下のように定義します。

functionの書き方1:引数なし

//関数の定義
function 関数名()
{
  ・・・処理・・・
}
 
//関数の呼出し
関数名();

関数の定義は「function 関数名()」の形式で記述します。

関数の呼出しは「関数名()」で指定します。

functionの書き方2:引数あり

//関数の定義
function 関数名($引数1 …)
{
  ・・・処理・・・
}
 
//関数の呼出し
関数名($引数1 …);

functionに引数を指定する場合は、呼び出す側でも引数に値をセットしておく必要があります。

関数の使い方

ここではfunctionを指定した関数の使い方を見ていきましょう。

引数なし

まずは引数を指定しない簡単な関数のプログラムを紹介します。

サンプルプログラム

//関数の定義
function foo(){
  echo 'samurai engineer';
}

//関数の呼出し
foo();

実行結果:

samurai engineer

このプログラムでは、

① 関数の呼出し処理であるfoo()が実行される
② function foo()に処理が飛ぶ
③ function foo()の中に記述している処理が実行される

となります。

引数あり

続けて引数を指定した関数の使い方を見ていきましょう。

関数に引数を指定することで、渡された関数の内部で引数の値を元に処理をすることができます。

サンプルプログラム1

//関数の定義
function foo($val){
  echo $val + 100;
}

$num = 100;

//関数の呼出し
foo($num);

実行結果:

200

このプログラムでは、

① 関数の呼出し処理であるfoo($val)に引数$numを指定して実行
② function foo($val)に処理が飛ぶ
③ function foo($val)の中で引数$valの演算結果を出力する

となります。

また、関数は一度定義すれば何度でも呼び出すことができます。

以下の処理では配列をループで回して、要素の値を引数として配列を呼出しています。

サンプルプログラム2

//関数の定義
function foo($val){
  echo $val.'<br>';
}

//配列の定義
$array = [100, 200, 300];

foreach ($array as $value) {

  //関数の呼出し
  foo($value);
}

実行結果:

100
200
300

ここでは、簡単な関数のプログラムを紹介しましたが、より応用的な関数の処理についても知りたい方は、以下の記事で詳しく解説しています!

【PHP入門】引数の基礎を完全攻略する!関数を呼び出す方法5選
更新日 : 2019年5月22日

引数の型を指定する

関数には引数の型を指定(タイプヒンティング)することができます。

引数の型を指定しておけば、指定した型以外の型が引数で渡されたときにエラーを返します。

サンプルプログラム

//関数の定義
function foo(Int $val){
    echo $val;
}

//関数の呼出し
foo(100);
foo('test'); //エラー

上記のサンプルでは関数で引数の型をInt型に指定していますが、引数に文字列「foo('test')」を渡すと、引数の型に一致しないため、

「Fatal error: Uncaught TypeError: Argument 1 passed to foo() must be of the type integer, ~」

のエラーが発生します。

引数にデフォルト値を設定する

関数の引数にはデフォルト値を設定することができます。

呼び出し元によってはNULLを渡してしまう可能性があるときなどに、あらかじめデフォルト値をセットしておけば、NULL参照のエラーを防ぐことができます。

サンプルプログラム

//関数の定義
function foo($val = 10){
    echo $val.'<br>';
}

//関数の呼出し
foo(100); //100
foo(); //10

実行結果:

100
10

実行結果から分かるように関数呼出し時に正しく値がセットされているときは、関数の定義で初期化した値は適用されません。

return(返り値)とは

PHPでは、関数を使用するときにfunctionを指定して関数名を定義します。

関数を使用すれば、関数内で独立した処理を実行することが可能となりますが、関数内の処理結果を取得したい場合は、returnオプションを指定して返り値を取得することができます。

また、関数内でreturnを指定すれば、関数の処理の途中でも任意の場所で関数を呼び出し元に制御を戻すことができます。

returnは以下のように指定します。

returnの書き方:

function 関数名()
{
  …実行処理…
  return $返り値;
}

なお、関数を途中で終了する場合は、返り値を指定せずに任意の場所でreturnのみを記述することで制御が呼び出し元に戻ります。

returnの使い方

ここでは実際に関数にreturnを指定して関数の処理を途中で終了したり、関数の返り値を取得する処理について見ていきましょう。

基本処理

前述したように関数内での実行結果をreturnオプションを指定して、返り値として取得することができます。

以下に直径の値を関数の引数に渡して、関数の中で円周の長さを計算して計算結果を返す簡単なサンプルを紹介します。

サンプルプログラム1:数値を返す

<?php

function GetPI($diameter){

  //円周の長さを求める
  $pi = $diameter * 3.14;

  //計算結果をreturnで返す
  return $pi;
}

//直径を指定
$value = 5;

//引数に直径の値を指定して結果を取得する
$sum = GetPI($value);

echo '円周の長さ :'.$sum;

?>

実行結果:

円周の長さ :15.7

サンプルでは、円周の長さを関数内で取得するために引数で直径の値を渡しています。

関数GetPIでは引数で渡された直径の値を元に円周の長さを計算して、計算結果をreturnで返しています。

このように関数の演算結果を呼び出し元の処理で取得するには、returnを使用すると便利であることがわかりますね!

また、returnで指定する返り値には文字列や配列を指定することも可能です

以下のサンプルでは、戻り値に文字列Stringを指定しています。

サンプルプログラム2:文字列を返す

//関数の定義
function getString($text){

  //結合した文字列を返す
  return $text.'engineer';
}

//関数の呼出し
$str = getString('samurai ');

echo $str;

実行結果:

samurai engineer

続いて、戻り値に配列を指定するサンプルです。

サンプルプログラム2:配列を返す

function GetFruits(){

  $fruits_array = ['apple', 'orange', 'melon',
                   'banana', 'pineapple'];

  //配列を返り値として指定する
  return $fruits_array;
}

$fruits = GetFruits();

print_r($fruits);

実行結果:

Array
(
    [0] => apple
    [1] => orange
    [2] => melon
    [3] => banana
    [4] => pineapple
)

関数の途中で処理を終了する

関数の処理の途中で関数を終了する場合は、処理を戻したい箇所でreturnのみ指定することで関数が終了します。

以下にreturnを指定して処理を終了する方法を記述します。

サンプルプログラム:

<?php

function foo($val){

  if ($val < 20){
    echo '関数の処理を終了する<br>';
    return;
  }
  echo $val;
}

$value = 10;
foo($value);

echo 'プログラム終了';

?>

実行結果:

関数の処理を終了する
プログラム終了

このサンプルでは値10を指定した変数を関数fooに渡しています。

関数の中ではif文で渡された値より20のほうが大きかったら、if文内でreturnを指定して関数の処理を終了しています。

そのため、if文の後の処理である「echo $val」が実行されていません。

真偽値を指定する

関数の返り値には真偽値(bool型)を指定することも可能です。

例えば関数内で指定した値が存在した場合はTRUEを、存在しなかったらFALSEを取得したい場合にreturnで真偽値の値を指定します。

以下に指定した値の存在有無の結果で真偽値を返す方法を記述します。

サンプルプログラム:

<?php

function fruits($array, $search){

  if (in_array($search, $array)){
    //指定した値が存在したらtrueを返す
    return true;
  }
  else{
    //指定した値が存在しなかったらfalseを返す
    return false;
  }
  echo '<br>';
}

$fruits_array = ['apple', 'orange', 'melon', 'banana', 'pineapple'];

$fruits1 = 'orange';

//関数の結果がtrueの場合はif文の処理を実行する
if (fruits($fruits_array, $fruits1)){
  echo $fruits1.'は存在します。';
}

?>

実行結果:

orangeは存在します。

サンプルでは関数fruitsに引数で配列と検索する値をif文の中で指定しています。

関数の処理では、渡された引数の配列に指定した値が存在するかif文でin_array関数を使用してチェックし、存在したらtrueを、存在しなかったらfalseを返します。

if文は評価がtrueの場合if文内の処理を実行しますので、関数呼び出し元の処理結果がtrueのためif文の処理を実行しています。

in_array関数の使い方については、以下の記事でも詳しく解説していますので、ぜひ参考にしてください!

PHPを継続的に学習するコツ

PHPの学習をしていて、わからないところが多く何回も調べながらやるのは正直、嫌になってしまいますよね。そこで、どのようにすれば継続的に学習を続けて行けるのかそのコツをご紹介します。

目的を明確にする

まずは、なぜPHPを学んでいるのか明確にしましょう。例えば、PHPを学んで

  • Webサイトが作りたい
  • WordPressの編集がしたい
  • エンジニアとして転職したい
  • フリーランスを目指したい


など、目的は色々あると思います。

この目的を明確にすることがとても大事で、PHPを学ぶ学習意欲に繋がっていきます。目的がないまま学習をしていると、学習すること自体が目的になってしまい、ゴールのない果てしない道を進むことになります。その結果、挫折してしまう人が多いのが現状となっています。

そうならないためにも、PHPを学ぶ目的は言えるようにしましょう。もし言えない場合は、学ぶプログラミング言語自体間違っている可能性もあります。なので、しっかり目的から学んでいる言語があっているか確認しましょう。

学習プランを決める

目的が明確になったら、次に学習プランを立てましょう。この学習プランを立てずに学習している人が多いのですが、学習プランがないと自分が今どのくらい進んでいて、後どのくらい学習をすればいいのか見えないので、学習をすること自体がきつく長続きしません。

学習を継続的に続けるためには学習プランは必須とも言えます。いつまでに、どのレベルになっていて、最終的なゴールはいつ達成するのかはしっかり決めましょう。

先生を見つける

「何度もエラーになって、自分で調べては修正する」この繰り返しがPHPを学習していると起こります。調べてもよくわからないし、時間もかかってしまってプラン通りに学習が進まないというのは当然のように起こります。

調べて直したけどうまく動かないしどうなってんの

このように思い、学習をすること自体に嫌気が指して挫折してしまう人も多いです。

そうならないためにも、「先生」を見つけることが大事になります。先生と言ってもそう簡単に探せそうにないですよね。最近ではSNSでもコミュニティーが増え、相談しやすい環境が増えてきています。こういったコミュニティーや勉強会を利用して先生を見つけるのも一つの手です。

自分に投資することも大事

学習サイトやアプリなど、無料で学習できる環境が整ってはいるものの自分に投資して学習をすることも大事です。本や有料学習サイトは、無料では学べない範囲の学習や機能が付いているので、効率的に学習をすることが可能です。

そして、投資のもう一つの方法がプログラミングスクールで学ぶことです。

独学と違い、プログラミングスクールでは上で紹介した学習を継続するためのサポートが徹底されているので、最も効率の良い学び方と言えるでしょう。先生も自分で探す必要がないので、エラーなどで躓いて時間がかかる心配もありません。

ですが、当然いきなりスクールに入るのは抵抗がありますよね。

その場合は、弊社で行っている無料体験レッスンへ参加してみてください。この無料体験レッスンでは、なぜPHPを学ぶのかその目的をヒアリングして、本当にPHPを学ぶべきなのか、その学習プランはどのように立てるのかなどの提案をしています。

目的をヒアリングすることで、あなたに最適な言語や学習プランが分かるので、最速でエンジニアを目指せるイメージがわきます。

手軽にしかもオンラインでも受けられるので、ぜひ一度目的を明確にしてみましょう。

無料体験レッスンに申し込む

まとめ

ここでは、PHPでのユーザー定義関数(function)や返り値(return)について、

・関数とは?
・関数の基本的な使い方
・返り値(return)とは
・returnの基本的な使い方

などについて解説しました。

関数の処理や処理結果をreturnで取得することはよくありますので、この機会に覚えておきましょう。

functionやreturnの使い方を忘れてしまったら、この記事を思い出してくださいね。

LINEで送る
Pocket

SEからWebエンジニアへ転職した理由

侍エンジニア塾卒業生の小池さんは、以前は社内SEとして約5年ほど勤務していました。しかし業務内容は社内のヘルプデスク対応など、プログラムを書く仕事は全くなかったそうです。

SEながらプログラムを書けない現状に「将来仕事がなくなるんじゃないか」と不安を感じ、プログラミング学習を決意。

弊社スクールで学習し、無事ベンチャー企業のプログラマーとして転職に成功しました。そんな小池さんの学習法や転職体験談を伺いましたので、是非ご覧ください。

「プログラミングができないSEは仕事がなくなる」不安を感じたSEが未経験から転職成功するまで
更新日 : 2019年10月7日

書いた人

ヤマシタ

エンジニア歴10年のフリーランスエンジニア。ITに関わるさまざまなコンテンツの企画・制作も行っています。
ITに関してはノウハウ系、ライフハック系、トレンド系など、200本以上の執筆経験があります。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説