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
定义为大写,true
,false
为小写,原因是 PHP 中的标准也会效仿。
IEEE 标准 1003.1 引用:
关于php - 为什么 PHP var_export() 打印 NULL 大写,而 true 和 false 小写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34467743/