PHPを勉強したてほやほやの頃、関数を作成している時に、ふと「echoとreturnの違いってなんだっけ?」とわからなくなったことがあったので、今日は復習のつもりで書いていきます。「WordPressを触りはじめて、PHPの勉強をさらっとしたけど、、、」という方にとっては、感覚的に理解していても理論的に理解できてない可能性があるので、一緒にさらっと復習しましょう!
echoとは
PHPマニュアル: echo — 1 つ以上の文字列を出力する
function hello(){
echo 'Hello, World';
}
hello();
→Hello, World
文字列をブラウザ上に出力するために、echoを使用します。PHPを勉強し始めて一番最初に学ぶことかと思います。
後に出てくる『return』との違いとしては、出力するというところで違いがあります。
returnとは
PHPマニュアル: returnは、プログラムの制御を呼び出し元に戻します。 呼び出し側のモジュールでは、呼び出しの次の式から続行します。
function hello(){
return 'Hello, World';
}
hello();
→何も表示されません
呼び出し元へ返すために、returnを使用します。
上記のコードでは、何も出力されません。これは、関数helloがreturnで返された『Hello, World』という値を持っているが、出力はされていない状態だからです。
関数helloを出力しようとすると、下記のようになります。
function hello(){
return 'Hello, World';
}
echo hello();
→Hello, World
値を返すというのは、イメージで言うと変数に値を代入している感じですね。例えば、変数$number = 1があったとして、これを出力しようとする時に『$number』とだけ記述しても出力されませんよね?出力するならば、『echo $number』と記述する必要があります。
関数内で行うreturnも同じです。returnすることで関数hello()が『Hello, World』という値を持つことになり、出力する場合、echoする必要があります。
なぜreturnを使う?
それだったら、returnを使うと記述量が増えるからreturnを使わずに、echoにした方が良くない?
上記の例だけを見ると、そう感じるかもしれませんが、実はreturnを使う方が使い勝手が良いのです。
それはなぜかというと、echoした場合は、その場で出力して終わってしまうのです。そうなると、他の処理の時にそのechoされた関数の結果を使いたくても使えないのです。
一方で、returnをした場合、定義した関数に値を返していますので、その関数の処理結果を使い回すことができます。
具体的な例で説明すると、
function getTaxPrice($price){ //(1)
return $price * 1.1;
}
function getTotalPrice($tax_price, $the_number){ //(2)
return $tax_price * $the_number;
}
$tax_price = getTaxPrice(100); //(3)
echo getTotalPrice($tax_price, 3); //(4)
→330
- (1)は、商品価格($price)に対しての税込価格を計算する関数です。
- (2)は、税込の商品価格に商品個数をかけて合計額を計算する関数です。
- (3)は、具体的な商品価格を(1)の引数に入れ、計算した結果を$tax_priceに代入しています。
- (4)は、(2)の引数に(3)の変数と商品個数をいれて出力しています。
上記の例からわかるように、returnして関数に値を返すことで、他の処理で使い回すことができるようになります。
関数内での処理を一回きりで終わらせることってあまりないかと思いますので、基本的にはreturnを使って再利用できるようにした方が便利ですよね。
さいごに
今回の記事の内容について、感覚的にはわかっていても『なぜそうしているか』頭で理解できていなかったりするんですよね。(ちなみに私はそうでした(笑))
本やネットに書いてあることをそのままコピぺするのではなくて、自分の頭で『なぜそうするのか』ということを理解することが大事かと思いますので、今回は、自分への復習の気持ちも込めて書きました。