Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.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 - Fatal编程技术网

Php 从字符串解析执行的逻辑顺序

Php 从字符串解析执行的逻辑顺序,php,Php,我正在构建一个查询PDM系统的系统 使用逻辑运算符解析字符串的最佳方法是什么。假设输入字符串的格式为: $string = '( (a OR b) and (a AND c) )'; 现在,考虑到a、b和c将被适当的查询子句(分别输入)替换,那么最好的解析方法是什么?查询不限于a、b和c(可能有更多或更少的子句),嵌套级别不限于2 最终结果应该是: $query->createContainer("and") ->createContainer("or")

我正在构建一个查询PDM系统的系统

使用逻辑运算符解析字符串的最佳方法是什么。假设输入字符串的格式为:

$string = '( (a OR b) and (a AND c) )';
现在,考虑到a、b和c将被适当的查询子句(分别输入)替换,那么最好的解析方法是什么?查询不限于a、b和c(可能有更多或更少的子句),嵌套级别不限于2

最终结果应该是:

$query->createContainer("and")
    ->createContainer("or")
        ->addCondition("a")
        ->addCondition("b")
        ->getParent()  //this moves the internal pointer back to parent container
    ->createContainer("and")
         ->addCondition("a")
         ->addCondition("c");
我已经为查询构建了对象接口(如上所示),但是在解析输入字符串时遇到了问题。我仍然可以影响输入字符串的形式,因此也有改进建议,谢谢

更复杂的字符串示例: $string='((a或(c和a))或(a和(f或(d和g))))


谢谢你的帮助

谷歌“分流码算法”用于将中缀转换为后缀符号,然后这将为您提供一个逻辑执行顺序感谢您的回复!我查了维基百科的文章。在这种情况下,你能给我一个如何实现算法的提示吗?