終極目標使用數組(或XML)編程功能
就是讓類似的Magento提供 - 基本邏輯建設者,和#2所示的這個帖子:jQuery (or any web tool) Nested Expression Builder到目前爲止,我已經做jQuery構建樹並獲取我希望構建器使用,檢查和設置的數據。現在我只需要解析這些檢查並將其添加到我正在編寫的腳本的各個位置 - 但我不確定如何動態處理它,以便執行這些檢查,這將導致發生某些操作/數據發生更改自動。
也許我們可以稱之爲動態表達式處理?
原貼
原諒我,我知道我想幹什麼,但根本不知道該怎麼辦呢 - 所以我在尋找一些靈感。我已經允許生成一個多維數組,並且該數組將包含某些'命令'和邏輯函數,並且當條件爲真時,它將被執行。
這是最基本的形式,該數組將包含一組if語句,如果該語句爲真,那麼會進入下一個數組項,然後下一個級別,如果它是假的, d進入沒有孩子的下一個數組項目(未婚兄弟姐妹,我想我們可以稱之爲)。一旦沒有什麼可以處理的,因爲沒有什麼是真的,那麼什麼都不會發生。
我想可能是通過XML提供數據的最佳方式 - 儘管如此,我可能會繼續深入下去,否則就會下降,直到出現真實情況?
基本上,數組採用以下形式(雖然我不是100%肯定,我編寫正確,但我認爲它看起來右:S):
[0][0] => array('function' => 'if', 'check' => 'day', 'condition' => 'equals', 'value' => '3');
[0][1][0] => array('function' => 'set', 'name' => 'date_day', 'value' => 'wednesday');
[1][0] => array('function' => 'if', 'check' => 'day', 'condition' => 'equals', 'value' => '4');
[1][1][0] => array('function' => 'set', 'name' => 'date_day', 'value' => 'thursday');
所以上面會 - 如果日= 3,然後將date_day設置爲星期三;否則,如果天= 4,則設置date_day週四
這我想像將對應於(雖然我不知道,如果你能分項):
<items>
<item>
<function>if</function>
<check>day</check>
<condition>equals</condition>
<value>3</value>
<item>
<function>set</function>
<name>date_day</name>
<value>wednesday</value>
</item>
</item>
<item>
<function>if</function>
<check>day</check>
<condition>equals</condition>
<value>4</value>
<item>
<function>set</function>
<name>date_day</name>
<value>thursday</value>
</item>
</item>
</items>
它們基本上將作出以下聲明在某種類型的功能:
function ($current_data){
LOOP
if(FUNCTION == "if"){
if(CHECK CONDITION VALUE){
**go to next item deeper in the chain**
} else {
**go to sibling item**
}
} else if(FUNCTION == "set"){
define(NAME, VALUE);
}
ENDLOOP
}
我知道上面可以使用date()
函數來完成,但是這是一個非常簡單的例子。另一個例子可能涉及檢查輸入的顏色是否是紅色,如果是,則根據此顏色設置一些顏色,如果顏色是藍色,則可以執行其他操作。另一個可能是將該模板設置爲美國訪問者,如果美國國旗被點擊。重點是它可以基本上完成任何操作並進行檢查並給出結果 - 基本上就像編程 - 但函數數據由PHP或XML提供的地方
我確定必須有一些東西在那裏可以做到這一點,但我不知道要開始準確,所以任何援助將是偉大的 - 是的,我知道可能有一些安全問題,但我打算檢查,檢查checks
,conditions
,values
,等等是安全的(所以這需要能夠被考慮進去)。
很多很多謝謝!
什麼是你想在這裏完成的?你讓自己的方式太複雜了..嗯,我認爲你在找什麼是array_map函數?我不知道什麼是你試圖做...要執行 – SolidSnake 2012-01-28 23:54:38
基本上允許檢查未硬編碼,可以這麼說,但可以在一個陣列/ XML的形式產生。我知道這聽起來有點複雜 - 但基本上只需要讀取數組或xml並根據其內容執行操作/檢查。 – MrJ 2012-01-28 23:57:39
啊哈我認爲你是在正確的方向上,我只能說你需要使用array_map,這對你有很大的幫助。所以不要使用循環。你只是完成實現你的(功能+您的數組值或XML文件)..然後使用array_map加載與功能的陣列.. – SolidSnake 2012-01-29 00:09:52