我正在尝试在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,但看起来逻辑表达式不能在那里使用。
答案 0 :(得分:0)
尝试使用array_walk()php函数