1

^これは、'firstCheck' に変数、'comparison' に演算子、'secondCheck' に値を持つデータベース テーブルです。

//some code here where I fetch everything
if ($event0FirstCheck . $event0Operator . $event0SecondCheck) {
        $output .= $event0output;
    } else if ($event1FirstCheck . $event1Operator . $event1SecondCheck) {
        $output .= $event1output;
    } else {
        $output .= "something went wrong...";   
    }

IF をエコーすると、出力は $gold>=100
になり、ELSE IF をエコーすると、出力は $gold<100 になります。

良いことは、データベースから変数を読み取ることができますが、オペレーターからは読み取れないことです。

そして私の質問は次のとおりです。オペレーターをデータベースに入れ、それらをフェッチするときにオペレーターとして使用することは可能ですか? 「オペレーターをデータベースに入れる必要はまったくない」など
と考えないでください。それが可能かどうか知りたいだけです。

4

1 に答える 1

1

これは可能ですが、通常の条件ステートメントなしではなく、独自のクラスまたは関数を作成することによって実行できます。

function condition($var1, $op, $var2) {

    switch ($op) {
        case "=":  return $var1 == $var2;
        case "!=": return $var1 != $var2;
        case ">=": return $var1 >= $var2;
        case "<=": return $var1 <= $var2;
        case ">":  return $var1 >  $var2;
        case "<":  return $var1 <  $var2;
    default:       return true;
    }   
}

if (condition($event0FirstCheck, $event0Operator, $event0SecondCheck)) {
    $output .= $event0FirstCheck.$event0Operator.$event0SecondCheck;
} else if (condition($event1FirstCheck, $event1Operator, $event1SecondCheck)) {
    $output .= $event1FirstCheck.$event1Operator.$event1SecondCheck;
} else {
    $output .= "something went wrong...";   
}

を使用することもできますeval()が、これは非常に危険な方法です。そのデータベースに破壊的な php コードがあった場合、大きな問題になります;)

http://php.net/manual/en/function.eval.php

eval() の例

$a1 = '$gold';
$b1 = 150;
$com1 = ">=";

$a2 = '$gold';
$b2 = 150;
$com2 = "<";

$gold = 100;

$str = 'if('.$a1.' '.$com1.' '.$b1.'){echo "'.$a1.' '.$com1.' '.$b1.'";}elseif('.$a2.' '.$com2.' '.$b2.'){echo "'.$a2.' '.$com2.' '.$b2.'";}else{echo "something is wrong...";}';
eval($str);
于 2013-06-13T14:01:04.703 に答える