PHP按位和问题的问题操作者

时间:2012-09-20 01:39:51

标签: php bit-manipulation

好吧,我有这段代码:

<?php
$p = 65536;
$p2 = 33554432;
if($p & $p2){
echo "True";
}else{
echo "False";
}
?>

好吧,如果我把数字放在脚本中输出是“False”,但是当我使用$ _GET,$ _ POST等时,即使我把数字放在引号中,它也会返回“True”。

问题是什么? 任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:3)

$_GET$_POST的元素是字符串。如果您阅读the docs,它会将每个字符转换为其序号位置,使用按位运算符命中它们,然后转换回字符。

您应首先在值上调用intval()

答案 1 :(得分:2)

您需要将它们转换为int,或者您正在使用两个字符串进行&

$p = (int)$_GET['p'];
$p2 = (int)$_GET['p2'];
if ($p & $p2) {
  // ...