是否可以轻松转换字符串
"4 | 2"
进入标准的按位比较,因此它返回 6。
这样我就可以完成这样的事情
$var1 = "4 | 2";
if(evalAsBitwise($var1) & 2) {
return true;
} else {
return false;
}
是否可以轻松转换字符串
"4 | 2"
进入标准的按位比较,因此它返回 6。
这样我就可以完成这样的事情
$var1 = "4 | 2";
if(evalAsBitwise($var1) & 2) {
return true;
} else {
return false;
}
如果你用空格作为分隔符来分割你的字符串,你会得到三个部分:第一个数字、运算符和第二个数字。在您的函数中,您可以使用 switch 来确定要使用的运算符。
就像是
function evalAsBitwise($input) {
$parms = explode(" ", $input);
$next;
$op;
$total = array_shift($parms);
while (!empty($parms)) {
$next = array_shift($parms);
if(is_numeric($next)) {
switch($op) {
case "|": $total = $total | intval($next); break;
case "&": ...
}
}
else {
$op = $next;
}
}// End while
return $total;
}
您还需要测试〜。但是,如果您需要它执行更复杂的表达式,例如 (a & b ^ (c ^ d)),它会变得更加复杂。
试试这个。它仅适用于按位或。
function evalAsBitwise($var) {
$values = explode($var);
$result = 0;
foreach ($$values as &$value) {
$value = trim($value);
$result = intVal($value) | intVal($result);
}
return $result;
}
我的 php 技能有点生疏,请检查语法错误。