【发布时间】:2018-05-18 09:09:34
【问题描述】:
我必须将二进制值存储在变量或数组元素中,以指示启用或禁用选项。
我相信使用“是”或“否”的效率低于 1 或 0(或为空),但我想知道 1/0 和 TRUE/FALSE 之间在性能或内存使用或其他方面是否有任何区别否则。
之间
$option = 1; # if the option is enabled
$option = 0; # if the option is disabled OR
$option = ""; # if the option is disabled
和
$option = TRUE; # if the option is enabled
$option = FALSE; # if the option is disabled
推荐哪种方式?为什么?
谢谢。
【问题讨论】:
-
您自己进行过任何基准测试吗?
-
没有任何实际区别。如果出于某种难以想象的原因 1/0 更好,那么 PHP 肯定会通过在内部将布尔值作为整数处理来进行微不足道的优化。
-
永远不要使用像“yes”和“no”或“true”和“false”这样的字符串来存储二进制值。始终使用在布尔上下文中正确评估的格式。例如,
(string) "false"是真的,所以你不想使用它。 -
感谢您的 cmets。我没有做基准测试,但我做了一些研究并没有找到答案。进行基准测试可能是一个好主意,但除了检查在浏览器中运行脚本需要多长时间之外,我不知道该怎么做。但是,在其他情况下,我看到它的变化很大,而无需更改脚本中的任何内容。
-
Alex 确认字符串不是一个好主意,我从 JJJ 的回答中了解到 TRUE/FALSE 和 1/0 几乎是等价的。事实上,我已经看到 SQLite 在插入数据时会将 TRUE/FALSE 值变为 1/0。如果使用 1/0 整数,我仍然不确定,当值不是 1 时,0、NULL 和“”(空字符串)是否等价。
标签: php performance memory integer boolean