🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

解決済

4回答

2935閲覧

PHP 関数 リターンの意味がわかりません。

daiki1

総合スコア9

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

0クリップ

投稿2019/10/16 04:42

前提・実現したいこと

PHPで関数を扱う時にreturnという意味が理解できません。
コードを書いていく中で関数化した方が、コードが見やすくなると思い
関数化しようと思うのですがやり方が理解できません。
初心者の私にも関数を使えるようにわかりやすい例・説明で
教えて頂けたら助かります。

ここに質問の内容を詳しく書いてください。
function greeting(){
echo 'hello';
}
greeting();
[ブラウザ] hello
上記の関数の呼び出しは理解できてます。

function greeting($name){
return 'こんにちは、'.name;
}
$s = greeting(山田さん);
echo $s;
[ブラウザ]こんにちは、 山田さん

returnの使い方となぜreturnを使うかが理解できません。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

PHP ソースコード ### 試したこと ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

PHP: ユーザー定義関数 - Manual

PHPではユーザー定義関数が戻してくる値のとり方が2つあります。

  • returnで戻される戻り値
  • 渡した引数(もしくはuseの値)をリファレンスする

投稿2019/10/16 04:50

yambejp

総合スコア116661

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

daiki1

2019/10/16 05:23

ありがとうございます。
guest

0

関数で処理した結果などを使いたいときにreturnを使うことが多いです。
returnは英語ですね。「戻す」
ですからreturnで指定した情報を呼び出し元に「戻す」わけです。

関数は自身がどこから呼ばれるか知らないものですし、returnしたとしてその先でどう使われるか知りません。
呼び出しに応じて所定の処理を行うだけです。

ちなみに提示のコードですが、こんな風にも書けます。

php

1function greeting($name){ 2 return 'こんにちは、'.$name; 3} 4echo greeting('山田さん');

greeting()という関数は「文字列を戻す」所定の処理を行うものなので、そのままechoすれば戻された文字列が出力されます。

「関数」はユーザー定義関数でもPHPの標準関数でも概念は同じです。
「呼び出されたら所定の処理を行う」これだけ。

そこに何かしらの引数(パラメータ、INPUT)があったり、処理後に戻り値(返却値、OUTPUT)があったり
それはその関数の機能要件次第です。

ユーザー定義関数では「処理結果を何かに使いたい」のであれば使わせる情報をreturnで戻してあげれば良いですし、処理して終わりなら何も戻さなくても良いです。

このあたりはちょっと説明を受けてすぐに実用できるようになるわけではありません。

今回の動機のように「コードを書いていく中で関数化した方が、コードが見やすくなる」など実装を考えて組んでみて、時に失敗してやりなおして、また考えて…
試行錯誤を繰り返して身に付いていくものです。

ただ、今回の動機は非常に良いところを突いています。
関数化は主に「役割分担」のために行います。
同じような処理をするならまとめておいて呼び出すだけで所定の結果を返してくれるようにしたほうが、コード量も少なく、且つ、一定の成果を常に出してくれるようになるわけですからね。

「どういうときに関数化するか」
「どういうときにreturnをさせるか」
ここはその役割や部品の責任範囲をどう持たせるかによって違ってくるので一概には言えませんが、なるべく部品は小さい単位で作った方が個々の部品のメンテナンスも楽ですし、「疎結合」といって、部品の独立性を高めることで汎用性の高いシステムを作ることができるので、長くなりそうなら更に外出して使うとか、ちょっと処理内容が違うくらいなら引数で分岐を入れて処理を変えるとか工夫をしていくと良いです。

投稿2019/10/16 06:23

m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

daiki1

2019/10/16 06:48

丁寧に解説して頂き有り難うございます。 これから色々なコードを書いていく中で関数にした方がいいのか それともする必要がないのかを考えながら書いて行こうと思います。 まだ、現在では上手く関数を扱えていないので将来使いこなせるように 意識してコードを書いていこうと思います。
m.ts10806

2019/10/16 06:53

ここはしっかり押さえておく必要がありますし、成長のために必要なステップです(後のオブジェクト指向にもつながります) がんばってください。
guest

0

ベストアンサー

よりわかりやすい例として、数学的な関数を考えてみましょう。

php

1$base = 7; 2$result = sqrt($base); 3echo "{$base}の平方根は{$result}です。";

ここにあるsqrtは「平方根を計算して、その結果をreturnする」関数です(PHPマニュアル)。

関数で行った処理で値を返すようにすると、呼んだ側でその値を「別な計算に使う」「表示する」など、自由に使えるようになります。

投稿2019/10/16 04:46

maisumakun

総合スコア145967

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

daiki1

2019/10/16 05:26

なぜreturnする必要があるかを教えて欲しいです。 returnするメリットが分からないので教えてください。 <?php //引数1と引数2を足した合計を呼び出す関数 function tasizan($a,$b){ $total = $a + $b; return $total; } //関数tasizanを使って1+2の結果を$kekkaに代入して表示しろ $kekka = tasizan(1,2); echo $kekka; ?> 関数を理解できなかったので簡単な関数を作ってまとめて みました。 関数内でreturnを使うと関数を呼びたした時に戻り値と して受け取ることができる。 一方でechoを使った場合は、戻り値を返さないので受け取る 事が出来ずただブラウザに表示をするだけ <?php //関数tasizanで引数1、2に値を代入して結果を表示しろ function tasizan($a,$b){ echo $total = $a + $b; } tasizan(1,2); ?>
maisumakun

2019/10/16 05:32 編集

結果を表示する専用の関数を作った場合、表示する以外にその結果を使い回す方法は(ものすごく煩雑な方法を取るのでなければ)ありません。一方で、returnすればその値をプログラム内の他の箇所でも使えます。
daiki1

2019/10/16 05:45

何度も質問失礼します。 この例だと新たに作った$kekkaに値を代入(使い回し)できる事が returnの使い道だという事でしょうか? もしよろしければ<?php //引数1と引数2を足した合計を呼び出す関数 function tasizan($a,$b){ $total = $a + $b; return $total; } を使った使い回し例を1つ頂きたいです。 <?php //引数1と引数2を足した合計を呼び出す関数 function tasizan($a,$b){ $total = $a + $b; return $total; } //関数tasizanを使って1+2の結果を$kekkaに代入して表示しろ $kekka = tasizan(1,2); echo $kekka; ?>
maisumakun

2019/10/16 05:50

> この例だと新たに作った$kekkaに値を代入(使い回し)できる事がreturnの使い道だという事でしょうか? そのとおりです。 > 使い回し例を1つ頂きたいです。 ごく簡単すぎて、逆にわかりづらくなるかと思います。上で挙げたような「平方根の計算」であれば、得た値を別な計算に使う場面も想像しやすいかと思います。
daiki1

2019/10/16 06:33

有り難うございました、関数のreturnを理解する事が出来ました。 ご丁寧にご回答して頂き有り難うございました。
guest

0

関数の返り値を返すため、あるいは特定条件で関数を終了するための構文です

投稿2019/10/16 04:45

y_waiwai

総合スコア88038

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

daiki1

2019/10/16 05:22

ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問