Php 从2个数组中选择下一个事件

Php 从2个数组中选择下一个事件,php,mysql,arrays,Php,Mysql,Arrays,我有两张桌子 table 'events' id      event_name date 1 buy milk 1319074920 // 10-20-2011 2 lunch 1321753320 // 11-20-2011 table 'people' id      user birthday 1 Jack 16508520 // 7-11-1970 2 Bil

我有两张桌子

table 'events'
id      event_name    date           
1       buy milk      1319074920 // 10-20-2011
2       lunch         1321753320 // 11-20-2011

table 'people'
id      user       birthday
1       Jack       16508520 // 7-11-1970
2       Bill       180409320 // 9-20-1975
我想做的是:

[1]创建一个数组,其中事件最接近当前日期/时间>>已解决

我的查询生成如下数组

Array ( [0] => 
    Array ( 
         [date]       => 1319074920
         [event_name] => buy milk
    ) 
)
[2]创建一个生日最接近当前日期/时间的数组

不知道怎么做。我可以查询数据库,检索用户和生日,循环搜索结果,但需要将生日年份更改为当前年份,保持月份和日期不变

[3]比较两个数组,选择一个最接近当前日期/时间的条目:生日或事件。

有什么建议吗

查询代码

    $query = $this->db->query("
    SELECT *
    FROM   events
    WHERE  UTC_1 >= UNIX_TIMESTAMP()
    ORDER  BY UTC_1
    LIMIT  1
    ;");

如果有一个查询为您提供了最接近的事件,那么只需对生日使用相同的查询,因为您的表是相同的结构。 一旦您有了最近的事件和最近的生日,您就可以在php中进行简单的比较,以找到要显示的事件

if (abs(bday[0]['date'] - time()) < abs(event[0]['date'] - time())) {
    // Show birthday
} else {
    // Show event
}
if(abs(bday[0]['date']-time())
您用来解决[1]的查询怎么会对[2]不起完全相同的作用?您的表结构和所需的筛选器在这两个问题上都是相同的,不是吗?是的,但存在一些差异:[1]所有生日(出生日期)都是过去的,[2]例如,我需要将1970年11月7日转换为2011年11月7日等等,以验证生日是否发生在“事件”表中的事件之前。我在这里找到了一个部分答案。我将查询添加到OP中-它只会获取下一个未来事件,我认为即使我在查询中使用
ABS
,也不会起作用,因为它将获得最近的过去生日,而不是未来的下一个生日abs的设置方式,它将找到过去和未来最接近的事件。如果您的查询只找到最近的未来事件,那么您根本不需要abs。