文字列を簡単に変換できますか
"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;
}
区切り文字としてスペースを使用して文字列を分割すると、最初の数値、演算子、および2番目の数値の3つの部分が得られます。関数では、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))のようなより複雑な式を実行する必要がある場合は、さらに複雑になります。
これを試して。ビットごとの OR でのみ機能します。
function evalAsBitwise($var) {
$values = explode($var);
$result = 0;
foreach ($$values as &$value) {
$value = trim($value);
$result = intVal($value) | intVal($result);
}
return $result;
}
私のphpスキルは少し錆びています。構文エラーを確認してください。