質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

2226閲覧

PHPでdefine定義するのは変数を作るのと何が違う?

notinoti

総合スコア52

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2014/12/08 02:41

C++の#defineはまったく別のものですよね。
**PHPのdefine()**は変数を生成することと何か違うところはあるのですか?

lang

1define("FOO", 0); 2$foo = FOO;

または

lang

1$foo = 0; 2$bar = $foo;

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

define()関数は定数を設定する関数です。主な変数との違いは次のようになります。

定数は、前にドル記号($)を要しません。
定数を定義することができるのは、define()関数のみです。単なる代入による定義はできません。
定数は、定義することができ、変数のスコープ規則に関係なく、あら ゆる場所からアクセス可能です。
定数は一度設定されると再定義または未定義とすることはできません。
定数は、スカラー値 (PHP 5.6 以降は、スカラー値あるいは配列) としてのみ評価可能です。

詳細は下記マニュアルで確認してください。
http://www.php.net//manual/ja/language.constants.syntax.php

スピードでいうと'define' 演算子の方が遅いです。下記コードを使うと確認できます。

lang

1$time_start = microtime(true); 2define('teisu', 123456789); 3for ($i = 0; $i < 1000000; ++$i) { 4 if ($i < teisu) { 5 // do nothing 6 } 7} 8$timelimit = microtime(true) - $time_start; 9echo '定数:'.$timelimit . 's'.PHP_EOL; 10 11$time_start = microtime(true); 12$hensu = 123456789; 13for ($i = 0; $i < 1000000; ++$i) { 14 if ($i < $hensu) { 15 // do nothing 16 } 17} 18$timelimit = microtime(true) - $time_start; 19echo '変数:'.$timelimit . 's'.PHP_EOL; 20 21$time_start = microtime(true); 22for ($i = 0; $i < 1000000; ++$i) { 23 if ($i < 123456789) { 24 // do nothing 25 } 26} 27$timelimit = microtime(true) - $time_start; 28echo '直接:'.$timelimit . 's'.PHP_EOL; 29 30出力 31定数:0.10920000076294s 32変数:0.078000068664551s 33直接:0.10920000076294s 34

投稿2014/12/08 05:14

fujiko

総合スコア93

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問