标签: php bit-manipulation
好吧,我有这段代码:
<?php $p = 65536; $p2 = 33554432; if($p & $p2){ echo "True"; }else{ echo "False"; } ?>
好吧,如果我把数字放在脚本中输出是“False”,但是当我使用$ _GET,$ _ POST等时,即使我把数字放在引号中,它也会返回“True”。
问题是什么? 任何帮助表示赞赏!
答案 0 :(得分:3)
$_GET和$_POST的元素是字符串。如果您阅读the docs,它会将每个字符转换为其序号位置,使用按位运算符命中它们,然后转换回字符。
$_GET
$_POST
您应首先在值上调用intval()。
intval()
答案 1 :(得分:2)
您需要将它们转换为int,或者您正在使用两个字符串进行&。
&
$p = (int)$_GET['p']; $p2 = (int)$_GET['p2']; if ($p & $p2) { // ...