首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >可重新定义布尔值FALSE和TRUE吗?

可重新定义布尔值FALSE和TRUE吗?
EN

Stack Overflow用户
提问于 2014-10-23 16:37:55
回答 3查看 2.4K关注 0票数 11

我正在读一本关于PHP以及关于使用TRUEFALSE的书,它说:

事实上,小写版本更稳定,因为PHP不允许您重新定义它们;大写版本可以重新定义。

我试图重新定义TRUEFALSE,但没有成功!!我在谷歌上重新定义常量,发现我需要使用runkit_constant_redefine(),我没有安装runkit扩展,所以我不能在TRUE和FALSE上尝试。

我的问题是,TRUEtrueFALSEfalse是否可以用runkit_constant_redefine()重新定义?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-23 16:56:35

布尔值真被定义为不区分大小写的常量,true是默认的表示法.

代码语言:javascript
复制
 define("true", 1, 1);

这意味着它也适用于任何其他套管,无论是TRUETrue还是TrUetRUE

你的书中提到的是在另一种情况下重新定义常量。你能做到的。除了小写的true之外,所有这些都是常量查找表中的打开点。

例如,对于define("True", 2),它将优先于小写定义的true,后者将替代其他情况。

不管怎么说,这是你书中的毫无意义的建议。即使您可以为布尔常量声明十几个变体,但实际上没有人这样做。假定的“更稳定”的推理实际上是假的。更喜欢更具可读性的符号或与现有编码风格相匹配的符号。

票数 5
EN

Stack Overflow用户

发布于 2016-05-05 13:27:28

您可以在每个名称空间中定义不同的truefalse

代码语言:javascript
复制
namespace foo;

define('foo\true', 0);
if (true) {
    echo 'This will be never printed.';
}
票数 1
EN

Stack Overflow用户

发布于 2014-10-23 16:44:48

是的,你可以,对于大写版本:

代码语言:javascript
复制
$ php
php > var_dump(defined('TRUE'), TRUE);
bool(true)
bool(true)
php > define('TRUE', 'arglebargle');
php > var_dump(defined('TRUE'), TRUE);
bool(true)
string(11) "arglebargle"

php > echo phpversion();
5.4.16

小写,不多:

代码语言:javascript
复制
php > var_dump(defined('true'), true);
bool(true)
bool(true)
php > define('true', 'foobarbaz');
PHP Notice:  Constant true already defined in php shell code on line 1

但你为什么要这么做?重新定义现实很难最终实现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26532998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档