gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 21:27:03 25 4
gpt4 key购买 nike

参见 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com