php - 为什么 PHP var_export() 打印 NULL 大写,而 true 和 false 小写?

标签 php

参见 https://3v4l.org/6Oelk

var_export(array(NULL, TRUE, FALSE));

结果:

array (
  0 => NULL,
  1 => true,
  2 => false,
)

NULL 是大写,而 true 和 false 是小写。

我想这是有历史原因的,但我没有在任何地方找到它的记录。


下面的实验也很有趣,表明在内部,null、true 和 false 的“规范”拼写是小写的,这与 var_export() 的作用相反:https://3v4l.org/ggM4E

define('false', '- false -');
define('FALSE', '- FALSE -');
define('null', '- null -');
define('NULL', '- NULL -');
var_export(array(TRUE, true, FALSE, false, NULL, null));

它表明:

  • define('NULL', ..) 和 define('FALSE', ..) 是允许的,但在最近的 PHP 版本中无效。
  • define('null', ..) 和 define('false', ..) 给出一个通知,但在最近的 PHP 版本中也没有效果。
  • 在较旧的 PHP 版本 (4.x) 中,“NULL”和“FALSE”可以重新定义,并且确实有效。但不能重新定义“null”和“false”。

哦,只是为了完整性:在 PHP 5.x 中,如果在命名空间内,define('NULL', ..) 和 define('FALSE', ..) 实际上不会被忽略。参见 https://3v4l.org/JusvB .或者,如果您确实需要,您甚至可以覆盖命名空间内的“null”和“false”:https://3v4l.org/i796C


相关:Uppercase Booleans vs. Lowercase in PHP ,看到这个答案:https://stackoverflow.com/a/3807178/246724

最佳答案

正如@NikiC 在 OP 评论中指出的那样,对此没有具体的推理。

最合乎逻辑的解释是,考虑到 PHP 是用 C 语言编写的,历史标准将 NULL 定义为大写,truefalse 为小写,原因是 PHP 中的标准也会效仿。

IEEE 标准 1003.1 引用:

关于php - 为什么 PHP var_export() 打印 NULL 大写,而 true 和 false 小写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34467743/

相关文章:

php - 将 end() 与 explode() 一起使用不起作用

php - 单击按钮时用户输入的 POST 查询

php - Jquery onclick,使父Div不可见

php - Upstart 的 Yii 控制台给我错误

php - 我如何链接回通知

javascript - 引用具有与之关联的类的 id (phpmailer)

php - Laravel - 格式错误的 UTF-8 字符,可能编码不正确

php - 如何在不破坏大项目的情况下更改文件名!

PHP 正则表达式 检查两个字符串是否共享两个公共(public)字符

php - 使用按钮获取特定数据 PHP MYSQL MORRIS.JS