终极目标使用数组(或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