• ベストアンサー

関数の返り値について。

関数が返す値ってreturnで返しますよね? 今回作っている関数はは返す値がHTMLで 複数行にわたる物なんです。 つまりreturnの後ろに戻り値をズラズラ連ねていくと、 非常に使いづらいんです。 解決法って無いでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • thelma
  • ベストアンサー率66% (20/30)
回答No.2

「戻り値をズラズラ連ねていく」というのは、具体的にどういうことをしようとしているのでしょうか? ちょっと、状況が想像できません。 #1の方がかかれたように、逐次出力していっても良いならそれでもいいと思いますし、そうでなくて「戻り値としてHTMLの文字列を返す」ということが必要な関数であれば、次のような感じにするのかな、と思います。 -- $returnHTML = "<html><body>\n"; $returnHTML .= "<h1>" . date("F j, Y, g:i a") . "</h1>\n"; $rreturnHTML .= "</body></html>\n"; return $returnHTML;

mulala
質問者

補足

ズラズラ・・ってのは、つまり、return の後ろにHTMLの構文を一行で書き連ねる、ということです。 return <html><body><font size=3 color=red>test</font></body></html> 問う言うような感じに。

その他の回答 (3)

  • thelma
  • ベストアンサー率66% (20/30)
回答No.4

「htmlを戻り値として返す必要があるのか、ないのか?」 をはっきりさせて頂けますか? 他の回答者の方にとっても、どうも曖昧なようなので。 関数の中で出力させて良いのでしたら、他の方が回答されているように、随時print(またはecho)すれば済むかと思います。 スクリプト中でHTMLをたくさん書くのが大変なら、Smartyのようなテンプレートエンジンを使うと良いと思います。 (Smartyについては、参考URLにあるサイトや書籍を参照してください) 戻り値として一連のHTML文字列を返す必要があるのであれば、たとえば#2で回答したように、適当な変数を定義して文字列を追加していく方法が採れると思います。 他に思いつくのは、別ファイルや定数などに、HTML文字列を記述しておいて、その中で動的に出力を生成する部分に適当なマークを入れておきます。 そして、HTML生成の処理で、マークを置換して文字列にあてはめるような方法でしょうか。 例えば、 define("HTML_SOURCE", "<html><body>#foo#</body></html>"); ... $returnHTML = str_replace("#foo#", "hello", HTML_SOURCE); return $returnHTML; というように。

参考URL:
http://smarty.php.net/,http://www.geocities.jp/rui_hirokawa/php/php-book2/
  • Sam_A
  • ベストアンサー率33% (6/18)
回答No.3

文字列なら普通にprintでOKではないでしょうか? <?php function kan($retdata)//関数定義 { print $retdata; } //本当は$dataに最終的に行いたい文字列を生成して下さい。 $data = "<html>\n<body>\n<font size=3 color=red>test</font>\n</body>\n</html>\n"; kan($data); ?>

  • coco1
  • ベストアンサー率25% (323/1260)
回答No.1

こんばんは。PHPの勉強を初めて2週間目のものです。 その場合は、あえて戻り値を返すのではなく関数内で描画処理をすましてしまえばいいのでは? つまり、関数としながらも実態はProcedureみたいな感じといえばいいでしょうか。

関連するQ&A