- ベストアンサー
関数定義での変数について
Perl/CGIより移行してきた者です。 この度、サブルーチン(PHPで言う関数定義)にて疑問があります。 当方、PHP5を利用しています。 Perl/CGIでは関数外で定義した変数も利用できたかと思うのですが、PHPでは利用できますか? 簡単なスクリプトでテストしたら表示されなく頭を悩ませています。 以下コードになります。 <?php $prints ="aaa"; $printss ="bbb"; function check3(){ print "$prints"; print "$printss"; } check3(); ?> Perl/CGIですと $test = "aaa"; &print(); sub print { print "$test"; } でもばっちり表示されたかと思うのですが。 伝わりにくいかと思いますが、ご存知の方宜しくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
Perlと違い、デフォルトで関数スコープなので、 global $prints, $printss などの宣言が必要です。 普通の言語では、グローバル変数の利用は例外的なケースだけですね。ま、PHPも普通の言語じゃないですけど。
その他の回答 (3)
- altrn
- ベストアンサー率62% (10/16)
すみません、 「関数外で定義した変数も利用」 を見落としていました。 申し訳ありません。 上で回答している皆様がおっしゃっているとおり、私も 「globalを使えば可能だが、classを利用していく方法をおすすめ」 させて頂いておきます。 無意味な回答となり失礼しました。
- altrn
- ベストアンサー率62% (10/16)
<?php $prints ="aaa"; $printss ="bbb"; function check3($prints,$printss){//ここを変更 print "$prints"; print "$printss"; } check3($prints,$printss);//ここを変更 ?> 上のように引数を指定する方法が 最も多く使うことになる方法になるかと思います。
- yambejp
- ベストアンサー率51% (3827/7415)
きょうびのプログラムではあまりグローバル変数はつかわなくなって きているのでは? ・引数として渡す ・クラスのメンバー変数をつかう のどちらかが賢明かと。 せっかくPHP5なのですから意識的にクラスを使う方がいいかも しれませんね。
お礼
グローバルという考え方を忘れていました。 思いだせました、ありがとうございます