• 締切済み

functionの使い方

PHP5を使用しております。 PHP初心者です。アドバイスお願いいたします。 ■内容 functionで、データを引き継ぐことができなくて困っています。 ------------------------------------------------------- <?php $answer=2; function moji($answer_moji){ //HTMLエスケープを行う $answer_moji=htmlspecialchars($answer_moji); print_r("HTMLエスケープ=".$answer_moji."<br>"); $answer_moji=$answer_moji+1; print_r("+1=".$answer_moji."<br>"); return $answer_moji; } moji($answer); print_r("moji=".$answer); ?> ---------------------------------------------------------- 結果: HTMLエスケープ=2 +1=3 moji=2 理想の結果: HTMLエスケープ=2 +1=3 moji=3 よろしくお願いいたします。

みんなの回答

  • umota
  • ベストアンサー率46% (150/324)
回答No.4

回答の言葉がわからなければ、安易に質問をくり返さず 自分で検索してください。 たとえば 「 php 関数の戻り値 」 でググれば詳しい説明がみつかるはずです。 (技術系検索は Google がお推めです。) # 初心者を免罪符に荒らされると迷惑です。

参考URL:
http://www.google.co.jp/search?q=php+%8A%D6%90%94%82%CC%96%DF%82%E8%92l&lr=lang_ja&num=20&hl=ja&btnG=Google+%8C%9F%8D%F5
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

PHP5なんだからclassで組めばだいぶちがってくると思いますよ

noname#58128
質問者

お礼

ご回答ありがとうございます。 実は、classの中で、簡単な処理の繰り返しをしたくてfunctionを使用することにしました。 $answer=moji($answer); print_r("moji=".$answer); で解決いたしました。 classでもチャレンジしてみます。 まだまだ勉強しなければと思います!

  • masa6272
  • ベストアンサー率66% (93/140)
回答No.2

関数(function)には、値が渡されます。 同じ名前の変数でも、関数の内部と外部はまったく別物です。 関数の中でいくら、値を変更しても外に影響は与えません。 <?php function myfunc($i) { $i++; echo $i; } $i = 1; myfunc($i); echo $i; ?> では、myfuncの中で、渡された1を1増やした結果の2が表示されますが、 関数の外の$iは、変化してませんので、外では1のままです。 後、コーディングで、いくつか変な所が・・ print_rは、配列を書き出します。これでも、動きますが、文字列を書くだけでしたら、通常はprintかechoを使います。 returnは、値を返すための物です。このプログラムでは、関数を呼んでも、値を使用していません。 <?php function myfunc($i) { $i++ return($i); } $i = 1; $j = myfunc($i); echo $i; echo $j; } ですと、12 と出力されます。 もうちょっと、基本を勉強した方がいいと思います。

noname#58128
質問者

お礼

ご回答ありがとうございます。 ご指摘の通りだと思います。 まだまだ勉強いたします。

  • umota
  • ベストアンサー率46% (150/324)
回答No.1

引数を参照渡しにする または、関数の戻り値を使う。 # [技術者向]なのでこれでわかるはずです。

noname#58128
質問者

お礼

ご回答ありがとうございます。 技術者向けとは言え、初心者なので、、、がんばります。 $answer=moji($answer); print_r("moji=".$answer); で解決いたしました。 この解決法と同じ回答を 教えてくださったということでしょうか。。