【完全解説】PHP returnの5つの使用法

PHPのreturn文を図解したイメージPHP
この記事は約10分で読めます。

 

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればカスタムコードを使って機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

この記事を読めば、PHPのreturn文の使い方を一から理解することができるようになります。

基本的な使用法から応用例、さらにはエラーハンドリングまで、初心者からプロまで必見の内容を詳細に解説しています。

サンプルコードも豊富に用意しましたので、一緒に学びながら実践的なスキルを身につけていきましょう。

●PHPとは

PHPは、Webサイトの動的な部分を制御するためのサーバーサイドスクリプト言語です。

大規模なWebサイトから小規模なWebサイトまで、広範囲に使用されています。

その主な理由は、PHPが提供する豊富な機能と柔軟性、そして学習曲線が比較的緩やかであることが挙げられます。

●PHPのreturn文とは

PHPのreturn文は、関数の実行を終了し、指定した値を関数の呼び出し元に返す役割を果たします。

○return文の基本的な概念

関数が処理を終えた結果を呼び出し元に知らせるためには、return文を使用します。

この値は、戻り値と呼ばれ、関数の呼び出し元でさらに処理を行うために使用されます。

○return文の基本的な使用法

PHPのreturn文の基本的な使用法は次の通りです。

function 関数名() {
    // 処理
    return 戻り値;
}

この形で記述することで、関数は「戻り値」を呼び出し元に返すことができます。

●PHPのreturn文の使い方

ここでは、実際にPHPのreturn文を用いたサンプルコードを見ていきましょう。

○サンプルコード1:基本的なreturn文の使用例

最初にご紹介するのは、基本的なreturn文の使用例です。

このコードでは、二つの整数を引数として受け取り、その積を返すシンプルな関数を作成しています。

function multiply($num1, $num2) {
    $product = $num1 * $num2;
    return $product;
}
echo multiply(4, 5); // 20

このコードの最初の部分では、multiplyという名前の関数を定義しています。

この関数は二つのパラメーター、$num1と$num2を受け取り、それらを掛け合わせた結果を$productという変数に格納します。

そして、return文で$productの値を呼び出し元に返しています。

関数の定義が終わった後、multiply関数を呼び出し、引数に4と5を与えています。その結果、20が出力されます。

○サンプルコード2:関数内でのreturn文の使用例

次に、関数内でreturn文を使用する例を見てみましょう。

このコードでは、与えられた数値が偶数か奇数かを判定する関数を作成しています。

function isEven($num) {
    if ($num % 2 == 0) {
        return true;
    } else {
        return false;
    }
}
echo isEven(7) ? "偶数です" : "奇数です"; // "奇数です"

このコードでは、まずisEvenという関数を定義しています。

この関数は1つの引数$numを受け取り、$numが2で割り切れるかどうか(つまり偶数かどうか)を判定します。

2で割り切れればtrueを、そうでなければfalseをreturnしています。

関数の定義が終わった後、7という引数を用いてisEven関数を呼び出しています。

7は奇数であるため、この関数はfalseを返し、結果として”奇数です”が出力されます。

○サンプルコード3:複数の値を返すreturn文の使用例

PHPのreturn文を使って複数の値を一度に返すことも可能です。

具体的には、配列として値をまとめ、その配列をreturnすることで実現できます。

次のコードでは、名前と年齢を配列として返す関数を作成しています。

function getPersonInfo() {
    $name = "山田太郎";
    $age = 25;
    return [$name, $age];
}
list($name, $age) = getPersonInfo();
echo "名前: $name, 年齢: $age"; // "名前: 山田太郎, 年齢: 25"

このコードでは、最初にgetPersonInfoという関数を定義しています。

この関数は、名前と年齢という二つの情報を配列としてまとめてreturnしています。

関数の定義が終わった後、この関数を呼び出し、返ってきた配列をlist関数を用いて二つの変数$nameと$ageに代入しています。

最後に、echo文でこれらの変数を出力しています。

○サンプルコード4:条件によって異なる値を返すreturn文の使用例

return文は条件によって返す値を変えるのにも利用できます。

次のコードでは、与えられた数値が正であればその数値を、0であれば文字列”zero”を、負であれば文字列”negative”を返す関数を作成しています。

function describeNumber($num) {
    if ($num > 0) {
        return $num;
    } elseif ($num == 0) {
        return "zero";
    } else {
        return "negative";
    }
}
echo describeNumber(-5); // "negative"

このコードでは、まずdescribeNumberという関数を定義しています。

この関数は、引数$numが正の数であればそのまま$numを、0であれば文字列”zero”を、負の数であれば文字列”negative”をreturnしています。

関数の定義が終わった後、-5という引数を用いてdescribeNumber関数を呼び出しています。

-5は負の数であるため、この関数は”negative”を返し、結果として”negative”が出力されます。

○サンプルコード5:再帰的な関数でのreturn文の使用例

再帰的な関数とは、自分自身を呼び出す関数のことを指します。

再帰的な関数を利用すると、繰り返しを使わずにループ処理を実行することが可能となります。

下記のコードは、引数に与えられた数値までの全ての数値の和を計算する再帰的な関数の例です。

function sumToN($n) {
    if ($n === 0) {
        return 0;
    } else {
        return $n + sumToN($n - 1);
    }
}
echo sumToN(5); // "15"

このコードでは、最初にsumToNという関数を定義しています。

この関数は引数として一つの数値$nを受け取ります。

関数内ではまず、$nが0であるかどうかを判定しています。

もし$nが0なら、これ以上再帰を続ける必要が無いので0をreturnします。

もし$nが0でなければ、$nとsumToN($n – 1)との和をreturnします。

これによって、1から$nまでの全ての数値の和が計算されます。

●return文の注意点と対処法

return文は非常に便利な機能ですが、適切に使用しないと予期しない結果を招くこともあります。

それでは、文を使用する際に気をつけるべき点をいくつか挙げてみましょう。

まず、return文は関数の実行を終了します。

つまり、return文が実行された時点でその関数の残りの部分は実行されないということです。

これは、複数のreturn文がある関数では特に注意が必要です。

return文が意図せず早い段階で実行され、予定していた計算や処理が完了しない場合があります。

また、return文は常に値を返すことを忘れないでください。

関数が値を返すことを期待して呼び出された場合、return文がないか、あるいは条件によってはreturn文が実行されない場合、エラーが発生する可能性があります。

これらの問題を避けるためには、関数の設計段階からreturn文の使用を慎重に考えることが重要です。

どのパスでどの値を返すべきか、全てのパスで値が返されるか、を確認しましょう。

●return文のエラーハンドリング

PHPでは、関数内で何らかのエラーが発生した場合、適切なエラーハンドリングを行うことが推奨されます。

特に、関数が期待する値をreturnできない場合、適切なエラーメッセージを出力したり、代替の値を返したりすることが重要です。

エラーハンドリングの一部として、return文を使ってエラーメッセージを返すことができます。

この方法は、エラーが発生した事実を呼び出し元に通知し、呼び出し元がそれに応じて適切に対処できるようにするためのものです。

○サンプルコード6:エラーハンドリング例

エラーハンドリングを含むPHPのreturn文の使用例を紹介します。

function divide($numerator, $denominator) {
    if ($denominator == 0) {
        return 'エラー:ゼロで割ることはできません!';
    } else {
        return $numerator / $denominator;
    }
}
echo divide(10, 0); // "エラー:ゼロで割ることはできません!"

このコードでは、二つの数値を引数として受け取り、その割り算の結果を返すdivide関数を定義しています。

関数内部では、まず分母が0でないことを確認しています。

分母が0である場合、エラーメッセージをreturnして処理を終了します。

このエラーメッセージは呼び出し元に戻され、問題のある操作が行われたことを表します。

分母が0でない場合は、正常に割り算を行いその結果をreturnします。

このように、エラーハンドリングを行うことで、関数が想定外の操作に対応できるようになります。

エラーメッセージを明確にして、呼び出し元が適切に対応できるようにすることが大切です。

次に、PHPのreturn文の応用例について説明します。

●PHP return文の応用例

return文は、単純な値を返すだけでなく、配列やオブジェクトを返すことも可能です。

また、関数の結果を直接別の関数に渡すこともできます。

このような特性を活かすと、コードの可読性を高め、複雑なロジックをより簡潔に表現することができます。

例えば、関数が複数の値を返す必要がある場合、配列を使うことで一つのreturn文でそれを実現することができます。

これは、複数の値を一つずつreturnするよりも、コードがシンプルになり、理解しやすくなります。

また、関数からreturnされた値を直接別の関数の引数として使用することも可能です。

これにより、一時的な変数を作らずに、結果を直接次の処理に渡すことができ、コードがすっきりします。

○サンプルコード7:高度な再帰的な関数でのreturn文の使用例

高度な再帰的な関数でのreturn文の使用例を紹介します。

function factorial($n) {
    if ($n == 0) {
        return 1;
    } else {
        return $n * factorial($n - 1);
    }
}
echo factorial(5); // 120

このコードでは、再帰を利用して階乗を計算するfactorial関数を定義しています。

再帰とは、自分自身を呼び出すことで、ここではnの値が0になるまで自身(factorial関数)を呼び出すことで、階乗の計算を行っています。

関数内部で、まずnが0かどうかを確認します。0の場合、1を返します。

この「0の場合に1を返す」部分が再帰呼び出しの終了条件(ベースケース)となります。

それ以外の場合、現在のnと、n-1の階乗を求める再帰呼び出しの結果を掛けて、その結果を返します。

このような処理は、階乗やフィボナッチ数列など、同じ操作を繰り返し行うような問題を解くのに便利です。

しかし、再帰呼び出しはスタックオーバーフローを引き起こす可能性があるため、使用する際には注意が必要です。

最後に、この記事で学んだPHPのreturn文の使用法についてまとめていきましょう。

まとめ

本記事では、PHPのreturn文の基本的な使用法から高度な使用法まで、詳しく解説しました。

基本的な値の返却からエラーハンドリング、再帰的な関数での使用まで、様々な事例を通じてreturn文の活用法を学びました。

特に、return文は関数からデータを出力するだけでなく、関数の実行を中断し、関数の呼び出し元に制御を戻す重要な役割も果たしていることを理解することが重要です。

これにより、エラーハンドリングなど、複雑な条件を効果的に扱うことができます。

さらに、再帰的な関数との組み合わせにより、より複雑な問題に対応することが可能になります。

これらの知識を活かして、PHPにおける関数の作成や利用の幅を広げてみましょう。

最後までお読みいただきありがとうございました。