php使用未定义常数,PHP错误信息“注意:使用undefined常量”是什么意思?

错误消息是由于不幸的事实,PHP将隐式地将未知标记声明为同名的常量string。

也就是说,它试图解释这个(注意缺less的引号):

$_POST[department]

唯一有效的方法是在PHP中有效的语法,如果以前有一个常量department定义。 所以,可悲的是,与此同时,不致死于致命的错误,它发布了这个通知,就好像一个常数已经被定义为具有相同的名称和值:

// Implicit declaration of constant called department with value 'department' define('department', 'department');

有多种方法可以得到这个错误消息,但是它们都有相同的根本原因 – 一个可能是一个常量的标记。

string缺less引号: $my_array[bad_key]

这就是你的情况,这是因为你有没有被引用的string数组键。 修复string键将修复错误:

更改:

$department = mysql_real_escape_string($_POST[department]); ...(etc)...

至:

$department = mysql_real_escape_string($_POST['department']); ...(etc)...

variables缺less美元符号: var_without_dollar

你可能会看到这个错误消息的另一个原因是,如果你从variables中取消$ ,或者从成员中取消$this-> 。 例如,以下任一情况都会导致类似的错误消息:

my_local; // should be $my_local my_member; // should be $this->my_member

variables名称中的字符无效: $bad-variable-name

如果您尝试在variables名中使用不允许的字符,则会导致类似但更细微的问题 – 连字符( - )而不是下划线_将是常见情况。

例如,这是可以的,因为在variables名称中允许使用下划线 :

if (123 === $my_var) { do_something(); }

但是这不是:

if (123 === $my-var) { do_something(); }

它会被解释为:

if (123 === $my - var) { // variable $my minus constant 'var' do_something(); }

引用一个没有指定类作用域的类常量

为了引用一个类常量,你需要用::来指定类的范围,如果你错过了这个,PHP会认为你正在谈论一个全局的define() 。

例如:

class MyClass { const MY_CONST = 123; public function my_method() { return self::MY_CONST; // This is fine } public function my_method() { return MyClass::MY_CONST; // This is fine } public function my_bad_method() { return MY_CONST; // BUG - need to specify class scope } }

使用此版本的PHP中未定义的常量,或者在未安装的扩展中定义

有一些系统定义的常量只存在于较新版本的PHP中,例如round()的mode选项常量round()如PHP_ROUND_HALF_DOWN只存在于PHP 5.3或更高版本中。

所以如果你试图在PHP 5.2中使用这个特性,那就说:

$rounded = round($my_var, 0, PHP_ROUND_HALF_DOWN);

你会得到这个错误信息:

使用未定义常量PHP_ROUND_HALF_DOWN – 假定为“PHP_ROUND_HALF_DOWN”警告(2):round()的参数数量错误

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值