在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)进行编码,这将为您提供...



您可以查看它是否是使用defined()定义的。许多人使用以下行,因此在其环境外部访问的PHP文件将无法运行...
<?php defined('APP') OR die('No direct access');

这利用了short circuit evaluation-如果左侧为true,则不需要运行右侧。

关于PHP未定义的常数测试,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5427886/

10-12 15:16