基于逻辑表达式在PHP中过滤数组

时间:2015-04-16 23:12:21

标签: php filter

我正在尝试在PHP中实现过滤器功能。我的二维输入数组如下所示:

name(string)    age(integer)    reg_date(date)
----------------------------------------------
John            22              12/03/2015
Anne            23              14/04/2015
Marry           24              01/02/2015
Tim             55              13/03/2015

我想要的是一个过滤器,它可以采用逻辑表达式并将其应用于输入源,如下所示(自己的草稿):

{name:'age' type:'integer', operator:'==', value:'23'} OR {name:'age' type:'integer', operator:'==', value:'24'} AND {name:'reg_date' type:'date', operator:'>', value:'12/03/2015', format:'d/m/Y'}

用文字表示:给我所有变量年龄为23或24且变量reg_date晚于12/03/2015的条目

对于每种数据类型(类型),应该存在一个应该能够处理数据类型相关操作的过滤器(例如,日期过滤器应该使用format字段以正确的格式解析日期)。可以很容易地添加新的数据类型。

上面表达式的正确输出是

name(string)    age(integer)    reg_date(date)
----------------------------------------------
Anne            23              14/04/2015

我的问题:我是否必须编写自己的词法分析器来解析逻辑表达式(可能会变得相当复杂)并应用我自己编写的过滤器或者我需要的过滤函数?我试图将我的数组解析为XML结构并使用XPath,遗憾的是PHP使用的XPath 1.0无法处理日期格式。我看了一下PHP Filter类中的filter_var,但看起来逻辑表达式不能在那里使用。

1 个答案:

答案 0 :(得分:0)

尝试使用array_walk()php函数