PHP定数とは?要約と解説

このQ&Aのポイント
  • PHPに定義されている定数とは、プログラム実行中に変更されることのない値のことです。
  • get_defined_constants()関数を使うことで、PHPや拡張機能で定義されている大量の定数を調べることができます。
  • 上記のコードでは、get_defined_constants()関数を使用して定数を表示しています。
回答を見る
  • ベストアンサー

実行時、どのような名前でどのような定数が

実行時、どのような名前でどのような定数が定義されているかは、次のように、get_defined_constants() 関数を使って調べることができます。PHPや拡張機能により大量の定数が定義されていることがわかります。 <?php var_dump(get_defined_constants());  以上参考書から引用しました。  初心者ですが、Webからアクセスできるように! 以下のプログラムにしてみました。 <html> <body> <?php var_dump(get_defined_constants()); ?> </body> </html> 以上の  実行結果が以下ですが、!?これって何を表わしているのでしょうか!?  以下よろしくお願い致します。 array(1520) { ["E_ERROR"]=> int(1) ["E_RECOVERABLE_ERROR"]=> int(4096) ["E_WARNING"]=> int(2) ["E_PARSE"]=> int(4) ["E_NOTICE"]=> int(8) ["E_STRICT"]=> int(2048) ["E_DEPRECATED"]=> int(8192) ["E_CORE_ERROR"]=> int(16) ["E_CORE_WARNING"]=> int(32) ["E_COMPILE_ERROR"]=> int(64) ["E_COMPILE_WARNING"]=> int(128) ["E_USER_ERROR"]=> int(256) ["E_USER_WARNING"]=> int(512) ["E_USER_NOTICE"]=> int(1024) ["E_USER_DEPRECATED"]=> int(16384) ["E_ALL"]=> int(32767) ["DEBUG_BACKTRACE_PROVIDE_OBJECT"]=> int(1) ["DEBUG_BACKTRACE_IGNORE_ARGS"]=> int(2) ["TRUE"]=> bool(true) ["FALSE"]=> bool(false) ["NULL"]=> NULL ["ZEND_THREAD_SAFE"]=> bool(true) ["ZEND_DEBUG_BUILD"]=> bool(false) ["PHP_VERSION"]=> string(6) "5.4.19" ["PHP_MAJOR_VERSION"]=> int(5) ["PHP_MINOR_VERSION"]=> int(4) ["PHP_RELEASE_VERSION"]=> int(19) ["PHP_EXTRA_VERSION"]=> string(0) "" ["PHP_VERSION_ID"]=> int(50419) ["PHP_ZTS"]=> int(1) ["PHP_DEBUG"]=> int(0) ["PHP_OS"]=> string(5) "WINNT" ["PHP_SAPI"]=> string(14) "apache2handler" ["DEFAULT_INCLUDE_PATH"]=> string(13) ".;C:\php\pear" ["PEAR_INSTALL_DIR"]=> string(11) "C:\php\pear" ["PEAR_EXTENSION_DIR"]=> string(6) "C:\php" ["PHP_EXTENSION_DIR"]=> string(6) "C:\php" ["PHP_PREFIX"]=> string(6) "C:\php" ["PHP_BINDIR"]=> string(6) "C:\php" ["PHP_LIBDIR"]=> string(6) "C:\php" ["PHP_DATADIR"]=> string(6) "C:\php" ["PHP_SYSCONFDIR"]=> string(6) "C:\php" ["PHP_LOCALSTATEDIR"]=> string(6) "C:\php" ["PHP_CONFIG_FILE_PATH"]=> string(10) "C:\Windows" ["PHP_CONFIG_FILE_SCAN_DIR"]=> string(0) "" ["PHP_SHLIB_SUFFIX"]=> string(3) "dll" ["PHP_EOL"]=> string(2) " " ["PHP_MAXPATHLEN"]=> int(260) ["PHP_INT_MAX"]=> int(2147483647) ["PHP_INT_SIZE"]=> int(4) ["PHP_WINDOWS_VERSION_MAJOR"]=> int(6) ["PHP_WINDOWS_VERSION_MINOR"]=> int(1) ["PHP_WINDOWS_VERSION_BUILD"]=> int(7601) ["PHP_WINDOWS_VERSION_PLATFORM"]=> int(2) ["PHP_WINDOWS_VERSION_SP_MAJOR"]=> int(1) ["PHP_WINDOWS_VERSION_SP_MINOR"]=> int(0) ["PHP_WINDOWS_VERSION_SUITEMASK"]=> int(256) ["PHP_WINDOWS_VERSION_PRODUCTTYPE"]=> int(1) ["PHP_WINDOWS_NT_DOMAIN_CONTROLLER"]=> int(2) ["PHP_WINDOWS_NT_SERVER"]=> int(3) ["PHP_WINDOWS_NT_WORKSTATION"]=> int(1) ["PHP_BINARY"]=> string(29) "C:\xampp\apache\bin\httpd.exe" ["PHP_OUTPUT_HANDLER_START"]=> int(1) ["PHP_OUTPUT_HANDLER_WRITE"]=> int(0) ["PHP_OUTPUT_HANDLER_FLUSH"]=> int(4) ["PHP_OUTPUT_HANDLER_CLEAN"]=> int(2) ["PHP_OUTPUT_HANDLER_FINAL"]=> int(8) ["PHP_OUTPUT_HANDLER_CONT"]=> int(0) ["PHP_OUTPUT_HANDLER_END"]=> int(8) ["PHP_OUTPUT_HANDLER_CLEANABLE"]=> int(16) ["PHP_OUTPUT_HANDLER_FLUSHABLE"]=> int(32) ["PHP_OUTPUT_HANDLER_REMOVABLE"]=> int(64) ["PHP_OUTPUT_HANDLER_STDFLAGS"]=> int(112) ["PHP_OUTPUT_HANDLER_STARTED"]=> int(4096) ["PHP_OUTPUT_HANDLER_DISABLED"]=> int(8192) ["UPLOAD_ERR_OK"]=> int(0) ["UPLOAD_ERR_INI_SIZE"]=> int(1) ["UPLOAD_ERR_FORM_SIZE"]=> int(2) ["UPLOAD_ERR_PARTIAL"]=> int(3) ["UPLOAD_ERR_NO_FILE"]=> int(4) ["UPLOAD_ERR_NO_TMP_DIR"]=> int(6) ["UPLOAD_ERR_CANT_WRITE"]=> int(7) ["UPLOAD_ERR_EXTENSION"]=> int(8) ["CAL_GREGORIAN"]=> int(0) ["CAL_JULIAN"]=> int(1) ["CAL_JEWISH"]=> int(2) ["CAL_FRENCH"]=> int(3) ["CAL_NUM_CALS"]=> int(4) ["CAL_DOW_DAYNO"]=> int(0) ["CAL_DOW_SHORT"]=> int(1) ["CAL_DOW_LONG"]=> int(2) ["CAL_MONTH_GREGORIAN_SHORT"]=> int(0) ["CAL_MONTH_GREGORIAN_LONG"]=> int(1) ["CAL_MONTH_JULIAN_SHORT"]=> int(2) ["CAL_MONTH_JULIAN_LONG"]=> int(3) ["CAL_MONTH_JEWISH"]=> int(4) ["CAL_MONTH_FRENCH"]=> int(5) ["CAL_EASTER_DEFAULT"]=> int(0) ["CAL_EASTER_ROMAN"]=> int(1) ["CAL_EASTER_ALWAYS_GREGORIAN"]=> int(2) ["CAL_EASTER_ALWAYS_JULIAN"]=> int(3) ["CAL_JEWISH_ADD_ALAFIM_GERESH"]=> int(2) ["CAL_JEWISH_ADD_ALAFIM"]=> int(4) ["CALi ・・・以下省略

  • PHP
  • 回答数2
  • ありがとう数0

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

  • ベストアンサー
  • hitomura
  • ベストアンサー率48% (325/664)
回答No.1

以下の2つのページを読めば、質問の文字列からPHPの定義済み定数が今どうなっているか、定義済み定数の主なものの意味がわかります。 以下のページに意味が書いていない定数もPHPのリファレンスマニュアルを検索すれば出てくるでしょう。 つか、1520個もある定数の意味を全部説明しろなんてやってられません。 http://www.php.net/manual/ja/function.var-dump.php http://php.net/manual/ja/reserved.constants.php

その他の回答 (1)

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.2

>これって何を表わしているのでしょうか!? マニュアルに書いているとおり、『PHPや拡張機能により大量の定数が定義されている』ということを表しています。個々の説明は要らないですよね(マニュアルに書いていますから)。 なので、普通は(マニュアルに例示されているように categorize を指定して使います。全部引っ張ってきても意味がないので。 <?php define("MY_CONSTANT", 1); $arr = get_defined_constants(true); print_r($arr['user']);

Campus2
質問者

補足

 ご回答ありがとうございました。  お返事が遅れて申し訳ございませんでした。   ご回答で、大量の定数だと分かりました。  

関連するQ&A

  • javaでカレンダー作成

    西暦年号・月を入力して、その月のカレンダーを出力するというものです。 <処理例> 指定日のカレンダーを出力します。 西暦年を入力:2007 月を入力:6 日 月 火 水 木 金 土 ______________________1____2 _3___4___5___6___7___8___9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 というものを出力したいです。下線は何もないという意味です。(見にくかったらすみません) 一応途中のプログラム載せます。 ~~~の部分を教えてください。 お願いします。 import java.io.*; public class Ex01a{ public static void main ( String[] args ) throws IOException{ int year, month, day, i, youbiNum=0; String ss; BufferedReader kbd = new BufferedReader(new InputStreamReader(System.in)); System.out.println("指定月のカレンダーを出力します"); System.out.print("西暦年を入力:"); ss = kbd.readLine(); year = getInt(ss); System.out.print("月を入力:"); ss = kbd.readLine(); month = getInt(ss); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ day = 1; youbiNum=getyoubi(year,month,day); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ } public static void printCal(int maxDay, int youbiNum){ int cal[] = new int[43]; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ public static int getyoubi(int year, int month, int day){ int youbiNum, y1, nissuu=0; y1 = year-1; nissuu += y1 + y1/4 - y1/100 + y1/400+getJulian(year, month, day); youbiNum = nissuu % 7; return youbiNum; } public static int getJulian(int year, int month, int day){ int julian; julian = day; while(--month > 0){ julian+=getDay(year,month); } return julian; } public static int getDay(int year, int month){ int mmdd[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int mmdd_day; mmdd[2] += uruu(year); mmdd_day = mmdd[month]; return mmdd_day; } public static int getInt(String ss){ try{ return Integer.parseInt(ss); } catch(Exception e){ return 0; } } public static int uruu(int yy){ if(yy%4==0 && yy%100!=0 || yy%400==0) return 1; else return 0; } }

  • Calendarクラスでエラーがでる

    こんにちは。 以下の単純なコードでエラーが出ます。 import java.util.Calendar; public class CalTest { public static void main(String args[]) { Calendar cal = cal.getInstance(); int year = 2002, month = 9, day = 19; cal.set(year,month,day); } } エラーは CalTest.java:6: 変数 cal は初期化されていない可能性があります。 Calendar cal = cal.getInstance(); です。使っているのはj2sdk1.4.0_01ですが、方法が変わったんでしょうか? 誰か分かる人がいたら教えてください。よろしくお願いします。

    • ベストアンサー
    • Java
  • これまた初歩的なことかもしれませんが^^;

    Cです。今作成中の、カレンダーを表示させるプログラムの一部なのですが、それを以下に書きます。 ――――――――――――――― int day_of_week(int year, int month, int day) { int a, i, days1 = 0, days2 = 0, alldays, wk; a = (year - 1)/4; days1 = a * 366 + (year - 1 - a)*365 - (year - 1)/100 + (year - 1)/400; for(i=1; i< month ; i++) days2 += day_of_month(year, i); alldays = days1 + days2 + day; wk = alldays % 7; return(wk); } int write_cal(int year, int month) { /* !!! */ } ――――――――――― 関数write_calで、関数day_of_weekの戻り値wkをつかいたいのですが、!!! にそのままday_of_week(int year, int month, int day)を入れると当然コンパイルエラーになります。初歩的なことをわすれているのかもしれませんが、ポインタなどもつかっていいのでやりかた教えてください! int write_cal(int year, int month, int day) にするというのはナシでお願いします

  • Java 日付の加算がうまくいきません。。どなたか助けてください・・・

    初歩的質問で申し訳ないのですが、ご存知の方ご教授ください。日付の加算についてどうしてもわからない箇所があります。 Calendar cal= Calendar.getInstance((TimeZone.getTimeZone("GMT"))); int year = 2007; int month = 1; int day = 1; cal.set(year,month,day); cal.add(Calendar.DAY_OF_MONTH,100); SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); String tempDate=sdf.format(date); tempDate=2007/05/12 私が求めている結果は tempDate=2007/4/11 なのですが、tempDate=2007/05/12になってしまいます。 お願いします。 環境:WinXp pro Eclipse 3.1 JDK 1.4.2 2007/4/11は Oracle8i の実行結果です。 select to_date('2007-01-01') +100 from dual

    • ベストアンサー
    • Java
  • phpからImageMagickの使い方

    phpからexecでImageMagickを使いたいと思っています。ためしにjpgからgifに変換できればと思っています。 exec("/usr/bin/convert IMG_0.jpg a.gif",$output); var_dump($output); という感じでテストしています。 ファイルのパスが間違ってるのかとも思うんですが、うまくいきません。 画像ファイルのパスはexecを実行するphpファイルからの相対パスでよいのでしょうか? -versionは成功しているようです。 exec("/usr/bin/convert -version",$output); array(3) { [0]=> string(68) "Version: ImageMagick 6.4.3 2009-04-10 Q16 http://www.imagemagick.org" [1]=> string(57) "Copyright: Copyright (C) 1999-2008 ImageMagick Studio LLC" [2]=> string(0) "" }

    • ベストアンサー
    • PHP
  • java Calendarクラス

    javaで月、日を入力してカレンダーを作成したのですが 年と月のsetでmonth-1はマジックナンバーなので直したいのですが どなたかわかる方教えてください。 package sample; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Test { private final static int firstday = 1; public static void main(String[] args) { //カレンダーのインスタンスを取得します Calendar cal = Calendar.getInstance(); //文字入力 BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); //年を取得 int year =0; //月を取得 int month =0; //最後の日付 int lastDay =0; //月初めの曜日を取得 int week =0; //年妥当性チェック boolean CheckYear = true; //月妥当性チェック boolean CheckMonth = true; try { //年妥当性チェック while(CheckYear){ System.out.println("年を入力してください"); //年を入力します year = Integer.parseInt(input.readLine()); //年が4桁の場合 if(String.valueOf(year).length()==4){ CheckYear = false; }else{ System.out.println("年は4桁で入力してください"); } } //月妥当性チェック while(CheckMonth){ System.out.println("月を入力してください"); //月を入力します month = Integer.parseInt(input.readLine()); //月が1~12の場合 if(month>=1&&month<=12){ CheckMonth = false; }else{ System.out.println("月1~12を入力してください"); } } }catch(IOException e){ System.out.println("数字以外は入力しないでください"); System.out.println("処理を中断します"); return; }catch (Exception a) { System.out.println("数字以外は入力しないでください"); System.out.println("処理を中断します"); return; } //年、月をセットします cal.set(year,month-1,cal.getActualMinimum(Calendar.DATE)); //月初めの曜日を取得 week = cal.get(Calendar.DAY_OF_WEEK); //年月を出力する System.out.println(String.valueOf(year)+"年"+String.valueOf(month)+"月"); //曜日を出力する System.out.println("日 月  火  水  木  金  土"); //最後の日付を取得する lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH); /* * 最後の日付を取得する */ if(month==1||month==3||month==7||month==8||month==10||month==12) { lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH); }else if(month==4||month==6||month==9||month==11){ lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH); }else if(year%4==0&&month==2){ lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH); }else if(year%4!=0&&month==2){ lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH); } /* * カレンダーを出力する */ //最後の日付まで繰り返す // 最後の日付まで繰り返す for (int i = 1; i <= lastDay; i++) { // 1日とそれ以外で分岐する if (i == 1) { // 1日の曜日位置まで移動する for (int j = 1; j < cal.get(Calendar.DAY_OF_WEEK); j++) { System.out.print(" "); } } else { // 日付を増やす cal.add(Calendar.DAY_OF_MONTH, firstday); } // 1~9と10~で表示を変える if (i < 10) { System.out.print(" " + i); } else { System.out.print(" " + i); } // 土曜日になったら改行する if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) { System.out.println(""); } } } }

  • PHPでファイルアップローダー

    PHPでファイルアップローダーを作成しましたが、サイズの大きなファイルがアップロードできなくて困っています。 具体的には、900MBのファイルアップロードはできますが、1.4GBになるとアップロードできていません。 設定値は下記のようにし、十分にとっているつもりです。なお、HTMLで表示した実際に使われている設定値です。 <?php echo 'memory_limit = ' . ini_get('memory_limit') . "<br />"; echo 'post_max_size = ' . ini_get('post_max_size') . "<br />"; echo 'upload_max_filesize = ' . ini_get('upload_max_filesize') . "<br />"; echo 'max_execution_time = ' . ini_get('max_execution_time') . "<br />"; echo 'max_input_time = ' . ini_get('max_input_time') . "<br />"; ?> ↓ memory_limit = 5120M post_max_size = 5120M upload_max_filesize = 5120M max_execution_time = 300 max_input_time = 300 $_FILEを確認すると、下記のようにファイル名以外空となっています。エラーコードが0で正常アップロードの判定になっているので、原因が分からず困っています。 array(1) { ["upfile"]=> array(5) { ["name"]=> array(5) { [0]=> string(24) "testfile.ISO" [1]=> string(0) "" [2]=> string(0) "" [3]=> string(0) "" [4]=> string(0) "" } ["type"]=> array(5) { [0]=> string(0) "" [1]=> string(0) "" [2]=> string(0) "" [3]=> string(0) "" [4]=> string(0) "" } ["tmp_name"]=> array(5) { [0]=> string(0) "" [1]=> string(0) "" [2]=> string(0) "" [3]=> string(0) "" [4]=> string(0) "" } ["error"]=> array(5) { [0]=> int(2) [1]=> int(4) [2]=> int(4) [3]=> int(4) [4]=> int(4) } ["size"]=> array(5) { [0]=> int(0) [1]=> int(0) [2]=> int(0) [3]=> int(0) [4]=> int(0) } } } アドバイスいただければ幸いです。

    • 締切済み
    • PHP
  • Java CDLC 1.0 での日付計算

    CLDC(携帯向けJava)での日付計算がうまくいきません。 JavaのSEでは、Calender.addなる日付計算関数があるようですが、 CLDC(携帯向けJava)では使えないみたいなので、以下の実験コードを 書いてみました。しかし、意図する結果が得られませんでした。 このケースでのよい計算方法をご存知でしたらご教授 頂ければうれしく思います。または、 以下のプログラムのバグ、ポカアホミス、作法的要修正点、 日付計算仕様的な可能/不可能等お気づきありましたら、 ご指摘頂ければ嬉しいです。 尚、意図した結果とは、下記の★部分において、 1970年1月1日(?曜日) 0:1:0 です。 グリニッジ標準時 1970 年 1 月 1 日 0:00:00 (エポック) からの 経過時間が、60000ミリ秒(60秒) というのを期待しました。 --以下コード-- void print_cal(Calendar cal){ String WEEK=" 日月火水木金土"; int year =cal.get(Calendar.YEAR); int month =cal.get(Calendar.MONTH)+1; int day_of_month=cal.get(Calendar.DAY_OF_MONTH); int day_of_week =cal.get(Calendar.DAY_OF_WEEK); int hour =cal.get(Calendar.HOUR_OF_DAY); int minute =cal.get(Calendar.MINUTE); int second =cal.get(Calendar.SECOND); System.out.println("" + year + "/" + month + "/" + day_of_month + "(" + WEEK.charAt(day_of_week) + ") " + hour + ":" + minute + ":" + second); } Calendar cal = Calendar.getInstance(); long now = cal.getTime().getTime(); print_cal(cal); cal.set(Calendar.YEAR, 2007); cal.set(Calendar.MONTH, Calendar.MAY); cal.set(Calendar.DAY_OF_MONTH, 31); cal.set(Calendar.HOUR_OF_DAY, 6); cal.set(Calendar.MINUTE, 12); cal.set(Calendar.SECOND, 44); print_cal(cal); //<---- 2007/5/31(木) 6:12:44 long time1 = cal.getTime().getTime(); cal.set(Calendar.YEAR, 2007); cal.set(Calendar.MONTH, Calendar.MAY); cal.set(Calendar.DAY_OF_MONTH, 31); cal.set(Calendar.HOUR_OF_DAY, 6); cal.set(Calendar.MINUTE, 13); cal.set(Calendar.SECOND, 44); long time2 = cal.getTime().getTime(); print_cal(cal); //<------ 2007/5/31(木) 6:13:44 long sabun = time2 - time1; //<---- 60000 Date hoge = new Date(sabun); long hoge_time = hoge.getTime(); System.out.println(hoge_time); <--- 60000 //setTime: Calendar の現在の時刻を、指定された Date に。 cal.setTime(hoge); //★この時点でprint_cal。 print_cal(cal); <---- 1970/1/1(木) 9:1:0 ?9時間も経ってる? long now2 = cal.getTime().getTime(); System.out.println("now2: " + now2); <--- 60000。でも60秒がはいってるぽい --コード以上--

    • ベストアンサー
    • Java
  • 一部の文字のみ文字化けします

    phpでXMLを生成しています。 XMLをエディターで見るとほとんどの文字は正常に表示されているのですが、一部の文字だけが文字化けしています。 具体的には 究、岩、ど の三つの文字だけです。 その三つの文字はいずれも同じ文字に文字化けしています。 cを丸で囲ったコピーライトの表記に使われる文字に似ています。 上記の文字のみなにかコピーライトに引っかかっているのでしょうか。 googleで色々と調べてみましたが、他の文字での文字化けの事例はあるのですが、上記の文字での事例は見つかりませんでした。 どなたかご教示願えませんでしょうか。 phpのバージョンはPHP Version 5.3.3です。 phpのあるディレクトリと同じディレクトリにhtaccessで以下の記述を入れています。 php_value mbstring.internal_encoding UTF-8 php_value default_charset UTF-8 php_value mbstring.http_output UTF-8 php_value mbstring.language UTF-8 php_value mbstring.http_input auto php_flag mbstring.encoding_translation On php_value output_handler mb_output_handler

    • ベストアンサー
    • PHP
  • 入力した年月日が過去か現在か未来かを表示するプログラム

    import java.util.*; import java.io.*; import java.text.*; 大事なところだけ抜粋。 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int year = Integer.parseInt(br.readLine()); int month = Integer.parseInt(br.readLine()); int day = Integer.parseInt(br.readLine()); Calendar cal = Calendar.getInstance(); cal.set(year,month-1,day); Calendar today = Calendar.getInstance(); SimpleDateFormat sbf = new SimpleDateFormat("yyMMdd"); Date date1 = cal.getTime(); Date date2 = today.getTime(); String result1 = sbf.format(cal); String result2 = sbf.format(today); 問題はここからです。 入力した年月日が過去か現在か未来か調べるのに<>=は使えないですよね。 どうすればいいのでしょうか。 アドバイス、宜しくお願い致します。

    • ベストアンサー
    • Java