Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 哪一个更有效:布尔值还是二进制整数?_Php_Performance_Memory_Integer_Boolean - Fatal编程技术网

Php 哪一个更有效:布尔值还是二进制整数?

Php 哪一个更有效:布尔值还是二进制整数?,php,performance,memory,integer,boolean,Php,Performance,Memory,Integer,Boolean,我必须在变量或数组元素中存储一个二进制值,以指示选项已启用或禁用 我相信使用Yes或No比1、0或empty效率低,但我想知道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 及 推荐哪种方式?为什么? 谢谢。在“其他任

我必须在变量或数组元素中存储一个二进制值,以指示选项已启用或禁用

我相信使用Yes或No比1、0或empty效率低,但我想知道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

推荐哪种方式?为什么?


谢谢。

在“其他任何东西”类别中;人类将立即从Yes/No/True/False/On/Off(是/否/真/假/开/关)中了解选项是否为布尔类型,但从0/1(也可以是数字选项)中则不会了解。这个问题可以通过使用后缀命名选项来解决,例如_bool,表示它是一个布尔选项而不是整数选项,这在代码和任何可能的选项配置文件中都是可见和明显的。

这个答案表明零、空和空是等效的,这个答案表明1和true是等价的。

您自己进行过基准测试吗?没有任何实际差异。如果出于某种不可想象的原因1/0更好,那么PHP肯定会通过将布尔值作为整数在内部处理来进行琐碎的优化。永远不要使用yes和no或true和false之类的字符串来存储二进制值。始终使用在布尔上下文中正确计算的格式。例如,字符串false为true,因此您不想使用它。谢谢您的评论。我没有做基准测试,但我做了一些研究,没有找到答案。进行基准测试可能是一个好主意,但除了检查在浏览器中运行脚本需要多长时间之外,我不确定如何进行基准测试。然而,在其他情况下,我看到脚本中的任何内容都没有改变,它是非常可变的。Alex确认字符串不是一个好主意,并且我从JJJ的回答中了解到,TRUE/FALSE和1/0几乎是等效的。事实上,我已经看到SQLite在插入数据时将真/假值转换为1/0。如果使用1/0整数,当值不是1时,我仍然不确定0、NULL和空字符串是否相等。
$option = TRUE; # if the option is enabled
$option = FALSE; # if the option is disabled