如何生成动态IF语句

时间:2019-03-29 08:09:54

标签: php arrays laravel

我的数组看起来像这样。

$setLogic = array(array("Conj"=>null,"Topic"=>True),array("Conj"=>"Or","Topic"=>True),array("Conj"=>"Or","Topic"=>false),

我尝试通过这种方式动态地构建IF语句。

foreach($setLogic as $value){
   echo $value['Conj'].(int)$value['Topic'];

    if($value['Conj'].(int)$value['Topic'] == true){
         $getBoolean[] = true;
    }
    else{
         $getBoolean[] = false;
    }

我只需要这样的东西。

(true or true or false)并返回true或false

2 个答案:

答案 0 :(得分:-1)

好的,我会重新制定答案。...

您要动态评估一个包含每个子数组的数组 *动词:“和”或“或” *值为“ true或” false“

更快,最脏的方法是使用eval()。 *将您的条件构建为字符串(用“ &&”替换“ and”,用“ ||”替换“ or”

'true || true && false'
  • 然后将结果放入变量并求值
eval('$result = (true || true && false);');
var_dump($result);

这可以肯定...

答案 1 :(得分:-1)

我自己找到了答案。 看起来像这样。

$abc= '';
foreach($setLogic2 as $key => $value){
    $abc.= $value['Conj'].' '.(int)$value['Topic'].' ';
}

//$abc = "0 And 1 And 1";

if(eval("return $abc;") == true) {
    echo 'true boolean';
}
else if(eval("return $abc;") == false){
    echo 'false boolean';
}
else{
    echo 'none';
}