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

基于逻辑表达式的PHP过滤数组,php,filter,Php,Filter,我正在尝试用PHP实现一个过滤器函数。我的二维输入数组如下所示: name(string) age(integer) reg_date(date) ---------------------------------------------- John 22 12/03/2015 Anne 23 14/04/2015 Marry 24 01/02

我正在尝试用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
我想要的是一个过滤器,它可以接受一个逻辑表达式并将其应用于输入源,如下所示(自己的草稿):

用文字表示:如果可变年龄为23或24岁且可变登记日期晚于2015年3月12日,请提供所有条目

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

上述表达式的正确输出为

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

我的问题是:我必须编写自己的lexer来解析逻辑表达式(可能会变得相当复杂)并应用我自己编写的过滤器,还是我需要的过滤器函数已经存在?我试图将数组解析为XML结构并使用XPath,不幸的是,PHP使用的XPath 1.0无法处理日期格式。我查看了PHP filter类中的filter\u var,但它似乎不能在那里使用逻辑表达式。

尝试使用array\u walk()PHP函数。

您不能从数据库中执行此操作吗?实际上,这似乎是db的工作。。如果您在代码中需要这个,我认为您必须编写它。
“PHP使用的XPath 1.0无法处理日期格式”
-为什么不尝试将其转换为带有时间戳的格式?还有,我会照@borracciaBlu说的做。这是数据库的作业。您必须生成逻辑运算符,如LIKE、IN、BETWEEN等。这些都在SQL中。您能详细介绍一下阵列的填充方式吗?否则,您将进行大量排序和循环以匹配您的条件。问题是大部分数据都存储在文档中(这不怪我)。我认为将其写入数据库并在数据库中执行查询将是一个巨大的开销,特别是因为数据也可以不断更改。strotime()运算符不是一个选项,因为像03/12/15这样的日期格式总是被视为m/d/Y,但实际上也可以是d/m/Y。这实际上是迭代的一个良好开端,但我认为最困难的部分是基于逻辑运算符的过滤。我担心这没有内置功能。
name(string)    age(integer)    reg_date(date)
----------------------------------------------
Anne            23              14/04/2015