Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将字符串转换为可执行表达式PHP?_Php_String_Laravel_Expression - Fatal编程技术网

将字符串转换为可执行表达式PHP?

将字符串转换为可执行表达式PHP?,php,string,laravel,expression,Php,String,Laravel,Expression,我正在开发ExpressionBuilder,用户可以在其中添加许多规则 我试图把规则转换成一个表达式,但是PHP总是考虑字符串,并且总是返回真< /代码> .< 有没有办法使该表达式可执行 public function translate($record = null){ $rule = $this->rule; $conditions = []; if( count($rule->rules) ){ $la

我正在开发ExpressionBuilder,用户可以在其中添加许多规则

我试图把规则转换成一个表达式,但是PHP总是考虑字符串,并且总是返回<代码>真< /代码> .< 有没有办法使该表达式可执行

public function translate($record = null){
        $rule = $this->rule;
        $conditions = [];
        if( count($rule->rules) ){
            $last_key = key( array_slice( $rule->rules, -1, 1, TRUE ) );
            foreach ($rule->rules as $key => $value) {
                $conditions[] = '"'.$record->{$value->field} .'" ' . $this->operator($value->operator) .' "'. $value->value.'"';
            }
        }

        $condition = implode(' '.$rule->condition.' ', $conditions);

        return $condition;// result : "Full Packaged Product" == "Full Packaged Product" AND "No" != "Y"
    }

// using here

foreach( $records as $ind => $record ){
            foreach( $rules as $rule){
                // $condition = $rule->translate(collect($record));
                $condition = $rule->translate($record);
                if($condition){
                    dump('Pass', $condition);
                }else{
                    dump('Fail', $condition);
                }
            }
        }
我还尝试使用
eval()
PHP函数,但没有成功

谢谢, Kaleem

如果您确定代码是安全的,您可以使用
eval()

用法:

eval('$res = "yes" == "no" ;'); 
var_dump($res); // bool(false)