gpt4 book ai didi

PHP 按位比较返回错误值

转载 作者:行者123 更新时间:2023-12-03 22:58:56 25 4
gpt4 key购买 nike

我正在进行这些比较,以查看启用了哪些选项,但 PHP 返回了错误的值。我正在检查用户启用了哪些银行。

普罗普里奥 = 1
伊塔乌 = 2
布拉德斯科 = 4
桑坦德 = 8
联邦储蓄银行 = 16
汇丰银行 = 32

当我从 MySQL 加载数据时,我得到了 16,因此只有 Caixa 已打开,但 PHP 表示 Próprio 和 HSBC 也已打开。我进行了其他测试并收到了以下结果:

1 & 1 = 真
1 & 2 = 假
1 & 4 = 假
1 & 8 = 假
1 & 16 = 正确
1 & 32 = 真

2 & 1 = 假
2 & 2 = 真
2 & 4 = 假
2 & 8 = 假
2 & 16 = 假
2 & 32 = 真

4 & 1 = 假
4 & 2 = 假
4 & 4 = 正确
4 & 8 = 假
4 & 16 = 假
4 & 32 = 假

8 & 1 = 假
8 & 2 = 假
8 & 4 = 假
8 & 8 = 正确
8 和 16 = 假
8 和 32 = 假

16 & 1 = 真
16 & 2 = 假
16 & 4 = 假
16 & 8 = 假
16 & 16 = 正确
16 和 32 = 正确

32 & 1 = 真
32 & 2 = 真
32 & 4 = 假
32 & 8 = 假
32 & 16 = 正确
32 & 32 = 真

预先感谢您的帮助。

最佳答案

尝试在按位运算符之前将两个值转换为 int。似乎 "1"& "16"= 1"1"& "2"= 0

编辑:这样做的原因是“如果左侧和右侧参数都是字符串,则按位运算符将对字符的 ASCII 值进行运算”,如 manual 中所述。

编辑2:对转换为字符串的值运行按位运算的快速测试似乎会产生与您一致的结果:

"1" & "1" == true
"1" & "2" == false
"1" & "4" == false
"1" & "8" == false
"1" & "16" == true
"1" & "32" == true

"2" & "1" == false
"2" & "2" == true
"2" & "4" == false
"2" & "8" == false
"2" & "16" == false
"2" & "32" == true

"4" & "1" == false
"4" & "2" == false
"4" & "4" == true
"4" & "8" == false
"4" & "16" == false
"4" & "32" == false

关于PHP 按位比较返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5888403/

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