- 締切済み
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 よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- umota
- ベストアンサー率46% (150/324)
回答の言葉がわからなければ、安易に質問をくり返さず 自分で検索してください。 たとえば 「 php 関数の戻り値 」 でググれば詳しい説明がみつかるはずです。 (技術系検索は Google がお推めです。) # 初心者を免罪符に荒らされると迷惑です。
- yambejp
- ベストアンサー率51% (3827/7415)
PHP5なんだからclassで組めばだいぶちがってくると思いますよ
- masa6272
- ベストアンサー率66% (93/140)
関数(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 と出力されます。 もうちょっと、基本を勉強した方がいいと思います。
お礼
ご回答ありがとうございます。 ご指摘の通りだと思います。 まだまだ勉強いたします。
- umota
- ベストアンサー率46% (150/324)
引数を参照渡しにする または、関数の戻り値を使う。 # [技術者向]なのでこれでわかるはずです。
お礼
ご回答ありがとうございます。 技術者向けとは言え、初心者なので、、、がんばります。 $answer=moji($answer); print_r("moji=".$answer); で解決いたしました。 この解決法と同じ回答を 教えてくださったということでしょうか。。
お礼
ご回答ありがとうございます。 実は、classの中で、簡単な処理の繰り返しをしたくてfunctionを使用することにしました。 $answer=moji($answer); print_r("moji=".$answer); で解決いたしました。 classでもチャレンジしてみます。 まだまだ勉強しなければと思います!