如何在PHP中不使用'eval'创建动态IF语句?

Rad*_*ity 0 php

我想使用来自数据库的一些选项在PHP中构建一个IF语句.

假设我从数据库得到这样的数组:

$db = [
    'number1' => [
        '<= 5',
        '&&'
    ],
    'number2' => [
        '> 200',
        '&&'
    ],
    'number3' => [
        '= 1',
        '||'
    ],
    'number3' => [
        '= 2',
        '||'
    ],
];
Run Code Online (Sandbox Code Playgroud)

我想将其翻译成:

if ($data['number1'] <= 5 && 
    $data['number2'] > 200 &&
    ($data['number3'] == 1 || 
     $data['number3'] == 2
    )) {
    // do something
}
Run Code Online (Sandbox Code Playgroud)

当然,我通过做一个foreach并将数组的KEY放入$data['']数组来启动它.但是,我很不确定如何将逻辑运算符和其他所有内容放在适当的位置.

谁能给我一个想法吗?

Pra*_*man 5

最好是清理来自MySQL或任何用户生成的数据的数据,而不是使用eval().对于您的情况,我建议将您的数据拆分为:

  • 操作者
  • 操作数
  • 下一个逻辑

然后将其与现有的进行比较,然后使用它.首先,您可以:

if ($operator == ">=")
  if ($operand >= $value)
Run Code Online (Sandbox Code Playgroud)

或类似的东西递归地构建它- 这是关键.希望这可以帮助.