我在执行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有类型转换进去。可以参考这里

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!

参考文档

歪楼。讲个 C++ 的故事。

Windows API 有一个数据类型 BOOL, 定义类似

typedef int BOOL;

然后还有 TRUE 和 FALSE 宏,定义分别是

#define TRUE 1

#define FALSE 0

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

#define NULL 0

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

相关标签:php

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

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

  1. php 为什么定义常量,php-将预定义常量定义为什么

    我有一个数据库类,该类自动建立与数据库的连接,并执行一些基本的输入筛选等操作.我正在查看设置一些预定义的常量,以调整类方法的行为.我应该将常量的值设置为什么?因为将永远不会直接引用或比较这些值,而仅在 ...

  2. php不是预定义超全局变量,五、PHP知识核心 预定义变量(超全局变量/数组)

    主要有:$_GET, $_POST, $_REQUEST, $_SERVER, $GLOBALS 均是数组 系统定义与维护 具有超全局作用域 不同情形下可能具有不同的值 $_GET:get请求(发送数 ...

  3. 【数据结构必备基本知识】数据结构常用预定义常量、类型及头文件

    数据结构中我们经常要用到很多预定义的常量,如果每次自己输入,那就比较麻烦啦,在这里,给大家把常用的预定义常量分享出来,下次再用到,直接复制粘贴就好啦. 一.常用头文件 首先自然是常用头文件,因为作者是 ...

  4. 创建一个显示所有预定义系统颜色的ListBox

    原文 Creating a ListBox that Shows All Predefined System Colors 该System.Windows.SystemColors类包含了一系列揭露当 ...

  5. TVM部署预定义模型

    TVM部署预定义模型 本文通过深度学习框架量化的模型加载到TVM中.预量化的模型导入是在TVM中提供的量化支持之一. 本文演示如何加载和运行由PyTorch,MXNet和TFLite量化的模型.加载后 ...

  6. VC++更改鼠标指针为系统预定义形状和自定义形状

    新建一个单文档工程:为视类添加WM_SETCURSOR消息处理函数: 设置鼠标指针为IDC_CROSS,这是系统预定义的,十字形:LoadCursor载入系统预定义光标时,第一个参数为NULL: 预定 ...

  7. PHP中的预定义常量

    PHP可以用预定义常量来获取PHP中的信息.常用的预定义常量如下: 1.__FILE__  默认常量,是指PHP程序文件名及路径: 2.__LINE__ 默认常量,是指PHP程序的行数: 3.__CL ...

  8. 关于VC预定义常量_WIN32,WIN32,_WIN64等预定义宏的介绍(整理、转载)

    参考帖子: (1)MSDN上专门讲预定义宏:https://msdn.microsoft.com/en-us/library/b0084kay(v=vs.80).aspx (2)VS中属性页的配置介绍 ...

  9. (三)使用预定义模型QDirModel的例子

    目录: (一) Qt Model/View 的简单说明 .预定义模型 (二)使用预定义模型 QstringListModel例子 (三)使用预定义模型QDirModel的例子 (四)Qt实现自定义模型 ...

最新文章

  1. 我又来定计划了~2015-8至年底
  2. NR 5G NAS非接入层
  3. 畅通工程,How Many Tables ACM第九天-图论
  4. erp物料报废 oracle_ERP核心业务流程和Oracle-ERP业务和数据对象分析
  5. PyTorch基础(part2)
  6. 电话光端机原理及作用分析
  7. 从数据平台到报表开发,我靠这个零代码报表工具,转行后月薪3W
  8. php arsort函数,php-常用函数
  9. 为了躲开违规电动车,我一下子撞电线杆上了
  10. dmg2iso使用及转换DMG文件遇到的问题
  11. java学习练习预埋件配筋计算
  12. 创新设计思维自学报告
  13. windows XP下openbravo ERP 2.40安装手迹
  14. 什么是无线信号的灵敏度和保真度
  15. 事物(Transaction)
  16. 解决mysql存储特殊文字(表情符号)utf8mb4
  17. 华为魔术2手机拆机图解_荣耀Magic2做工如何?荣耀Magic2拆解图解评测 (全文)
  18. 比人工更智能更有趣的植物识别--形色
  19. python中的slice用法
  20. 豆瓣 9.3 的高分,牛逼的 Git!

热门文章

  1. linux嵌入式开发遇到坑不用慌 让你快速提升进度
  2. 《Hadoop MapReduce性能优化》一1.3 Hadoop MapReduce的工作原理
  3. 一些变态的PHP一句话后门收集
  4. 桌面开发者的界面故事,该醒醒了
  5. 好用的侧边栏菜单/面板jQuery插件
  6. Linux 增大Swap
  7. 导入已有工程相关问题解决实录
  8. 最短路[Dijkstra和堆优化的Dijkstra][Bellman-Ford和SPFA][Floyd最短路](更新中)
  9. PAT甲级1058 A+B in Hogwarts :[C++题解]字符串,进制,简单
  10. stm32跑马灯实验