【发布时间】:2014-06-14 06:37:20
【问题描述】:
我的 PHP 页面在每次加载时都有一系列变量;它们的值决定了显示哪些小部件。每个小部件都设置了何时显示的标准。
示例。显示小部件“A”,其中:
"page==1, page!=3, user>9, rank!=blue"
$myVars = array();
$myVars['page'] = 1;
$myVars['user'] = 99;
$myVars['rank'] = 'red';
在这种情况下,我编写了一个简单的方法 - 它界定了查询并对每个条件进行比较,并在遇到 FALSE 时立即停止。问题是我的引擎不支持“OR”运算符。必须满足每一个标准。而且我无法弄清楚如何将运算符添加到其中。
"page==1 || page==2 && page!=3 && user>9 || user==3 && rank !=blue"
这将使我在显示小部件时更加灵活,而无需为不同的场景制作大量重复的小部件。我看到 SQL 必须如何运行查询和我想如何查询我的变量之间存在相似之处 - 是否有一个我可以使用的预先编写的引擎,或者我的命运是否注定要编写一个完整的引擎来解决一个小部件是否符合标准?
在此先感谢克雷格。
【问题讨论】:
-
你的语言现在是什么样的,你想支持什么?
-
if有什么问题? -
@AbraCadaver - 如果可以从小部件中保存的查询动态生成“IF”语句 - 那将是完美的。小部件的查询作为字符串保存在数据库中。我假设如果我将它放入 IF 语句中,它只会将其视为字符串并返回 false,因为该字符串不是布尔值
-
@Halcyon 目前看起来像 "page==1, page!=3, user>9, rank!=blue" 并且检查每个条件,如果它们都满足,则显示小部件。我想支持 OR 运算符(可能还支持使用括号的分组语句,如 IF 语句或 SQL 查询)。我将尝试将我的 PHP 添加到刚才的 OP 中。
-
好吧,那就去 CNF:en.wikipedia.org/wiki/Conjunctive_normal_form - 无需偏离多年的良好实践。
标签: php comparison operators