Heim  >  Artikel  >  Backend-Entwicklung  >  php有一个预定义的常量true,值为整数1,这该如何理解?

php有一个预定义的常量true,值为整数1,这该如何理解?

WBOY
WBOYOriginal
2016-10-10 11:56:261972Durchsuche

我在执行get_defined_constants()时意外地发现php有一个内部的常量,名称为true,值为整数1,同样也有名为false和null的常量。
难道php把true当做常量来处理了?它本不应该是一个“值”么?
不应该是一个数据类型为boolean的值么?
我试着执行echo(true) ,浏览器输出字符1,而我var_dump(true),输出了bool(true),这不是显然矛盾么?
而且,true===1也是不成立的啊。true==1才是成立的。
所以我想知道php到底是怎么处理true false null的。

回复内容:

我在执行get_defined_constants()时意外地发现php有一个内部的常量,名称为true,值为整数1,同样也有名为false和null的常量。
难道php把true当做常量来处理了?它本不应该是一个“值”么?
不应该是一个数据类型为boolean的值么?
我试着执行echo(true) ,浏览器输出字符1,而我var_dump(true),输出了bool(true),这不是显然矛盾么?
而且,true===1也是不成立的啊。true==1才是成立的。
所以我想知道php到底是怎么处理true false null的。

echo 输入是字符串,所以true有类型转换进去。可以参考这里

<code>Printing or echoing a FALSE boolean value or a NULL value results in an empty string:
(string)TRUE //returns "1"
(string)FALSE //returns ""
echo TRUE; //prints "1"
echo FALSE; //prints nothing!</code>

参考文档

歪楼。讲个 C++ 的故事。
Windows API 有一个数据类型 BOOL, 定义类似

<code class="cpp">typedef int BOOL;</code>

然后还有 TRUEFALSE 宏,定义分别是

<code class="cpp">#define TRUE 1
#define FALSE 0</code>

C++ 本尊还有一个宏 NULL, 定义则是

<code class="cpp">#define NULL 0</code>

以及我怀疑 PHP 的做法是把 true 当做 boolean 类型的 1. 瞎猜的,错了请尽情反对。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn