0 レビュー
2 回答
php-文字列をビット単位の比較に変換します
文字列を簡単に変換することは可能ですか
"4 | 2"
標準のビット単位の比較に変換して、6を返します。
このようなことを成し遂げるために
$ var1 = "4 | 2";
if(evalAsBitwise($ var1)&2){
trueを返します。
} そうしないと {
falseを返します。
}
わからない
0
レビュー
答え :
解決策:
区切り文字としてスペースを使用して文字列を分割すると、最初の数値、演算子、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))のようなより複雑な式を実行する必要がある場合は、さらに複雑になります。
わからない
0
レビュー
答え :
解決策:
これを試してください。ビット単位のORでのみ機能します。
function evalAsBitwise($var) {
$values = explode($var);
$result = 0;
foreach ($$values as &$value) {
$value = trim($value);
$result = intVal($value) | intVal($result);
}
return $result;
}
私のphpスキルは少し錆びています。構文エラーがないか確認してください。
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。