ここから本文です

戻り値が返されるのはどのタイミングですか? 関数を呼び出した時がそうですか?

rih********さん

2019/6/817:54:54

戻り値が返されるのはどのタイミングですか?

関数を呼び出した時がそうですか?

閲覧数:
34
回答数:
5

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

shi********さん

2019/6/822:33:39

関数の実行が終了したタイミングと思っておけばいいでしょう。

return があればその時点で戻り値が確定して呼び出し元に帰りますし、return がないまま関数を終えれば null を呼び出し元に返します(このタイミングで戻り値が確定することになる)。

https://www.php.net/manual/ja/function.return.php
https://www.php.net/manual/ja/functions.returning-values.php




というか、

$a = func(1);

とか

echo func(2);

とか書くだけなので「戻り値をどう使っているか」だけが重要であって、どのタイミングってことは意識する必要がありませんよね。



タイミングに気を遣うとすれば、関数の中で echo とかしていれば「戻り値を返す前に echo される」くらいのでしょうか。
そういうケースでは関数は戻り値は返さずに「xxx を表示する」だけに特化させることが多いです。

func(3);

といった使われ方ですね。

(蛇足)
Wordpressの関数群は「xxx を返す関数」と「xxx を表示する関数」が用意されていたりしますね。get_the_title()は記事のタイトルを返しますし、the_title()は(記事ループ内で)タイトルを表示する関数です。

  • shi********さん

    2019/6/822:37:41

    >dfzhddcfhxさん

    phpカテゴリでアセンブラの話を持ってこられても混乱するだけは?「セットする」タイミングではなく「返す」タイミングですしね。

    アセンブラのRETではなくphpの構文としてのreturnや関数の話ですので(phpの関数は、そもそも return が必須ではないし)。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜4件/4件中

並び替え:回答日時の
新しい順
|古い順

som********さん

2019/6/912:11:28

> 私のようにアセンブラ・機械語まで扱えるようにならないとこの事は分からない
いや解っていない。

特定場所に値をセットしても、非同期の並列処理でも無ければ、単に値をセットしただけの事で、「値を返している」訳ではない。
「(返っているという言い方は相応しくないが)」と自覚されているみたいだが…

dfz********さん

2019/6/820:56:36

>戻り値が返されるのはどのタイミングですか?

それはコードの書き方による

下の人の回答は間違い
return のタイミングではない
return が実行される前に既に返っている
(返っているという言い方は相応しくないが)

return で返す値はEAXレジスタに入れるように決まっている
EAXレジスタに戻り値を入れた後にRET(return)で返ってくるから
returnを実行する前に既に戻り値は確定している

よって return の実行の数ステップ前には確定しているため
どの地点とは言えない、コードの書き方による



これはC言語のような高級言語しか使えないプログラマーは知るすべがない
私のようにアセンブラ・機械語まで扱えるようにならないとこの事は分からない

fil********さん

2019/6/819:37:24

呼び出した関数が終了した後。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

nan********さん

2019/6/817:59:55

普通なら、関数を呼びその関数が処理を終え、returnなどで値を返した時です。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる