簡體   English   中英

帶運算符的PHP查詢/比較方法

[英]PHP Query/Comparison Method with Operators

我的PHP頁面在每次加載時都有一系列變量; 它們的值確定要顯示的窗口小部件。 每個窗口小部件都為何時顯示設置了標准。

例。 顯示小部件“ A”,其中:

“ page == 1,page!= 3,用戶> 9,等級!= blue”

$myVars = array();
$myVars['page'] = 1;
$myVars['user'] = 99;
$myVars['rank'] = 'red';

在這種情況下,我編寫了一個簡單的方法-它對查詢定界,並對每個條件進行比較,並在遇到FALSE時立即停止。 問題是我的引擎不支持“或”運算符。 必須滿足所有標准。 而且我無法理解如何添加運算符。

“ page == 1 || page == 2 && page!= 3 &&用戶> 9 || user == 3 &&等級!=藍色”

這將使我在顯示小部件的時間時更具靈活性,而無需為不同的場景制作大量重復的小部件。 我看到SQL必須如何運行查詢與我想如何查詢變量之間存在相似之處-是否可以使用預寫引擎,或者如果小部件符合條件,我的命運是否可以編寫一個完整的引擎來解決?

預先感謝,克雷格。

擴展語言以支持合取范式析取范式

page==1 || page==2 && page!=3 && user>9 || user==3 && rank !=blue

看起來像(CNF):

(page==1 || page==2) && page!=3 && (user>9 || user==3) && rank !=blue

如果要簡化解析,可以執行以下操作:

(page==1 || page==2) && (page!=3) && (user>9 || user==3) && (rank !=blue)

DNF看起來像:

(page==1 && page!=3 && user>9 && rank!=blue)
||
(page==2 && page!=3 && user>9 && rank!=blue)
||
(page==1 && page!=3 && user==3 && rank!=blue)
||
(page==2 && page!=3 && user==3 && rank!=blue)

CNF在這里似乎更自然。

另一個可行的解決方案(比eval更安全)可能是使用parse_str的某種組合將動態變量轉換為可比較的變量-但是我不確定如何在沒有eval的情況下仍然可以生成動態if語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM