Delicious Bookmark this on Delicious Share on Facebook SlashdotSlashdot It! Digg! Digg



PHP : Function Reference : PHP Options&Information : get_defined_constants

get_defined_constants

Returns an associative array with the names of all the constants and their values (PHP 4 >= 4.0.7, PHP 5)
array get_defined_constants ( [mixed categorize] )

Returns the names and values of all the constants currently defined. This includes those created by extensions as well as those created with the define() function.

Parameters

categorize

May be passed, causing this function to return a multi-dimensional array with categories in the keys of the first dimension and constants and their values in the second dimension.

<?php
define
("MY_CONSTANT", 1);
print_r(get_defined_constants(true));
?>

The above example will output something similar to:

Array
(
   [internal] => Array
       (
           [E_ERROR] => 1
           [E_WARNING] => 2
           [E_PARSE] => 4
           [E_NOTICE] => 8
           [E_CORE_ERROR] => 16
           [E_CORE_WARNING] => 32
           [E_COMPILE_ERROR] => 64
           [E_COMPILE_WARNING] => 128
           [E_USER_ERROR] => 256
           [E_USER_WARNING] => 512
           [E_USER_NOTICE] => 1024
           [E_ALL] => 2047
           [TRUE] => 1
       )

   [pcre] => Array
       (
           [PREG_PATTERN_ORDER] => 1
           [PREG_SET_ORDER] => 2
           [PREG_OFFSET_CAPTURE] => 256
           [PREG_SPLIT_NO_EMPTY] => 1
           [PREG_SPLIT_DELIM_CAPTURE] => 2
           [PREG_SPLIT_OFFSET_CAPTURE] => 4
           [PREG_GREP_INVERT] => 1
       )

   [user] => Array
       (
           [MY_CONSTANT] => 1
       )

)
Note:

The value of the categorize parameter is irrelevant, only its presence is considered.

Return Values

ChangeLog

Version Description
5.0.0 The categorize parameter was added.

Examples

Example 1834. get_defined_constants() Example

<?php
print_r
(get_defined_constants());
?>

The above example will output something similar to:

Array
(
   [E_ERROR] => 1
   [E_WARNING] => 2
   [E_PARSE] => 4
   [E_NOTICE] => 8
   [E_CORE_ERROR] => 16
   [E_CORE_WARNING] => 32
   [E_COMPILE_ERROR] => 64
   [E_COMPILE_WARNING] => 128
   [E_USER_ERROR] => 256
   [E_USER_WARNING] => 512
   [E_USER_NOTICE] => 1024
   [E_ALL] => 2047
   [TRUE] => 1
)


Code Examples / Notes » get_defined_constants

05-jan-2006 07:29

If you want to filter through and return only the prefix for your constants (i.e. you have constants with a naming scheme), then you can use this quick little function. It comes in handy for debugging.
<?php
function returnConstants ($prefix) {
foreach (get_defined_constants() as $key=>$value)
if (substr($key,0,strlen($prefix))==$prefix)  $dump[$key] = $value;
if(empty($dump)) { return "Error: No Constants found with prefix '".$prefix."'"; }
else { return $dump; }
}
?>
Example:
<?php
define("SITENAME_OPTION_ONE",true);
define("SITENAME_OPTION_TWO",false);
define("SITENAME_URL","foo");
print_r(returnConstants("SITENAME_OPTION"));
?>
Will return:
Array
(
   [SITENAME_OPTIONONE] => 1
   [SITENAME_OPTIONTWO] =>
)


eslindsey

If you need to use the values of your defined constants in strings or for example in HEREDOC syntax, use this function:
<?php
//PHP5+ only
$constarray = get_defined_constants(true);
foreach($constarray['user'] as $key => $val)
   eval(sprintf('$_CONSTANTS[\'%s\'] = \'%s\';', addslashes($key), addslashes($val)));
//PHP4+ ...this is less efficient since it defines hundreds of constants
foreach(get_defined_constants() as $key => $val)
   eval(sprintf('$_CONSTANTS[\'%s\'] = \'%s\';', addslashes($key), addslashes($val)));
?>
Once you run that you can use $_CONSTANTS['constantname'] to get the value of a constant. You'll need to erase the array and rerun the code if you define any new constants. But I found it handy when I wanted to use a couple of my defined constants in HEREDOC syntax. Don't forget: because this is not really a superglobal you'll need to globalize it if you want to use it from within a different scope, for example:
<?php
//hopefully you ran the snippet out here so that $_CONSTANTS is in global scope.
$mv = $_CONSTANTS['foo']; //works
function my_function()
{
   global $_CONSTANTS;       //without this line it won't work in here!
   $mv = $_CONSTANTS['bar']; //works thanks to previous line
}
?>


peter p.

Does not return class constants in PHP 5.

me

<?php
/**
* Convert constant value into string name.
*
* @param  mixed  Constant value.
* @return string Constant name.
* @access public
*/
function sch_get_consant($value)
{
$constants = get_defined_constants();
$name = array_search($value, $constants, TRUE);
return $name;
}
?>


Change Language


Follow Navioo On Twitter
assert_options
assert
dl
extension_loaded
get_cfg_var
get_current_user
get_defined_constants
get_extension_funcs
get_include_path
get_included_files
get_loaded_extensions
get_magic_quotes_gpc
get_magic_quotes_runtime
get_required_files
getenv
getlastmod
getmygid
getmyinode
getmypid
getmyuid
getopt
getrusage
ini_alter
ini_get_all
ini_get
ini_restore
ini_set
main
memory_get_peak_usage
memory_get_usage
php_ini_scanned_files
php_logo_guid
php_sapi_name
php_uname
phpcredits
phpinfo
phpversion
putenv
restore_include_path
set_include_path
set_magic_quotes_runtime
set_time_limit
sys_get_temp_dir
version_compare
zend_logo_guid
zend_thread_id
zend_version
eXTReMe Tracker