PHP未定义常量测试

标签 php if-statement constants

在 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/

相关文章:

php - 按修改日期排序这个数组?

php - UTF-8贯穿始终

php - 在后台运行脚本并从 php 返回它的 pid

python - 无效语法 - python

PHP "if()"构造 : can conditionals nest?

c - 不使用#define 的全局常量

由于属性必须是常量表达式错误,Java 代码无法编译

php - MySQL -- SELECT 命令被拒绝给用户

java - 是否可以在 java switch/case 语句中使用类名?

swift - 无法将调用结果类型 "Bool"转换为预期类型 int?