在 PHP 中,如果我这样定义常量:
define('FOO', true);
if(FOO) do_something();
do_something
方法按预期执行。
但是如果我不在下面定义 BOO
常量:
if(BOO) do_something();
然后 do_something
也被执行。这是怎么回事?
最佳答案
// BOO has not been defined
if(BOO) do_something();
BOO
会被强制转换成字符串BOO
,不为空,为真。
这就是为什么有些不知道的人使用 $something[a]
访问数组成员会更好。
您应该使用 error_reporting(E_ALL)
进行编码,然后它会给您...
Notice: Use of undefined constant HELLO - assumed 'HELLO' in /t.php on line 5
可以通过defined()
查看是否定义。许多人使用以下行,因此在其环境之外访问的 PHP 文件将不会运行...
<?php defined('APP') OR die('No direct access');
这利用了 short circuit evaluation - 如果左侧为真,则无需运行右侧。
关于PHP未定义常量测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5427886/