I'm not so sure eslindsey AT gma il dot co m is correct. From my experience, using constance in an array works fine if you think about it as a math constant. Take the example below, it works on 4.x and 5.x
<?
//Our define, probably located in a config file somewhere
define('SomeName', 3);
//The call to our function
test();
//The function itself
function test()
{
$test = array('10', '13', 'whatever', 'somethingelse', '85');
echo $hithere = $test[(SomeName)];
echo "\n";
echo "\n";
}
?>
get_defined_constants
(PHP 4 >= 4.0.7, PHP 5)
get_defined_constants — Restituisve un array associativo con i nomi di tutte le costanti ed i loro valori
Descrizione
array get_defined_constants
( void
)
Questa funzione restituisce i nomi ed i valori di tutte le costanti attualmente definite. Queste includono sia quelle create dalle estensioni sia quelle create con la funzione define().
Ad esempio la linea seguente:
<?php
print_r(get_defined_constants());
?>
visualizzerĂ il seguente elenco:
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 )
Vedere anche: defined(), get_loaded_extensions(), get_defined_functions() e get_defined_vars().
get_defined_constants
ryan at crystaldawn dot net
20-Feb-2008 07:42
20-Feb-2008 07:42
eslindsey AT gma il dot co m
13-Aug-2007 01:12
13-Aug-2007 01:12
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
}
?>
05-Jan-2006 11: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] =>
)
me at gogogadgetscott dot info
18-Jun-2005 11:14
18-Jun-2005 11:14
<?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;
}
?>
