• ベストアンサー

変数を取り出しているのに、なぜdefine関数は使

変数を取り出しているのに、なぜdefine関数は使わないの? 変数に値を格納して取り出すときは、define関数を使うと覚えたのですが 牡蠣コードでも変数に値を入れて取り出せます。 <?php $number = 12345; echo $number; ?> define関数はどういう時に使うのでしょうか?文字列の場合のみですか?

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

  • ベストアンサー
回答No.3

define()は定数の指定。 ただし注意が必要。 define()で指定した定数のスコープはグローバルになってしまうこと。 特定の範囲(スコープ)で指定したいならconstを使う必要がある。 それでもクラスを作ってその中でconstを使えば abc::AAAとか指定すればconstでもグローバルに使えるようにはできるけど

xhermfodhb
質問者

お礼

defineを使うとグローバルの定数になってしまうのですか。有難うございます。

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

単純な例だと <?PHP define("MY_YES",1); define("MY_NO",0); function test_yes() { return MY_YES; } if(test_yes()===MY_YES) print "YES"; ?> みたいに、戻り値や設定値に数字を使うような場合は、意味のわからない数値より 任意の定数で判断する方が処理が確実だということ ビット演算と組み合わせると、特定条件のorやandが取れるのでよく使われます

xhermfodhb
質問者

お礼

定数にした方がわかりやすい場合にdefine関数を使って わかりやすい名前を付けるのですね。有難うございます。

回答No.1

defineは変数ではなく定数の定義だよ。 define("number", 12345); $number = 12345; echo number; echo $number; どちらも12345を取り出せる。 が、変数は値を変更(代入)できるけど 定数は値を変更(再定義)できない。 どんな時に使うか、と言うと値を変更されたくない時。 変更されたくないなら変数使ってても代入しなきゃええやん、と思うかもしれないが、 一人でやってるならそれでいいが、複数人でやってるとそうもいかない。 ちなみに文字列以外でも設定できる。 http://www.php.net/manual/ja/function.define.php

xhermfodhb
質問者

お礼

define関数は変数ではなく定数の定義ですか。 勘違いしていました。 define("number", 12345); この部分で、numberへ定義しているのですね。有難うございます。

関連するQ&A

専門家に質問してみよう