根据PHP手册constant()
,如果您需要检索常量的值,但不知道其名称,则非常有用。即它存储在变量中或由函数返回。
define("MAXSIZE", 100);
echo MAXSIZE;
echo constant("MAXSIZE"); // same thing as the previous line
如果有人不知道MAXSIZE
,他怎么能使用 constant("MAXSIZE")
。这足以使用 echo MAXSIZE
吗?有人可以用一个例子解释一下吗?我尝试了下面的代码,它不起作用。
define("MAXSIZE", 100);
$x = MAXSIZE;
echo constant($x);
答案 0 :(得分:9)
尝试一下,应该有效
define("MAXSIZE", 100);
$x = "MAXSIZE";
echo constant($x);
如果你有一个字符串变量,方法constant()
将返回一个已定义常量的值。
考虑这个例子。
define("MAX", 1000);
define("MIN", 1);
$val = 50;
$const = null;
if ( $val < 50 ) {
$const = "MAX";
} else {
$const = "MIN";
}
echo constant($const); // output 1
答案 1 :(得分:2)
通过do not know its name手册意味着constant()
除了字符串文字外,还可以接受表达式(例如字符串和变量的变量或串联)作为常量的名称。
这种描述确实有点误导。描述这个的更好方法是说你不必知道它的名字。例如,如果常量的名称存储在变量中或由类定义,则不能直接按名称引用常量。这是constant()
派上用场的地方,允许我们动态引用常量的名称而不实际知道。
例如,考虑以下区别:
define('MAXSIZE', 100);
echo MAXSIZE;
和
define('MAXSIZE-2', 100);
$sizeConstantPrefix = 'MAXSIZE';
$sizeConstantSuffix = '-2';
echo constant($sizeConstantPrefix.$sizeConstantSuffix);
或更极端
class whatever {
const 'MAXSIZE-2' = 100;
}
$className = 'whatever'
$sizeConstantPrefix = 'MAXSIZE';
$sizeConstantSuffix = '-2';
echo constant($className.'::'.$sizeConstantPrefix.$sizeConstantSuffix);