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 回答