php array_filter按日期

时间:2014-02-21 08:31:25

标签: php mysql arrays date

PHP新手,所以不确定这是不是最好的方法。基本上我有一个记录集的结果,现在我可以做3或4个查询&返回结果,因为我需要它们,但我认为有一个查询并在我需要的时候在数组中过滤结果会更有效。

我把结果放到一个数组中,现在我想按周和月显示结果,所以我有理由将数组循环3次,每天,每周和每月,而不是3次调用数据库。 / p>

第一个问题是PHP中最好的方法???

其次是我无法解决如何使用array_filter($ array_name,DATE?)我无法让日期部分工作。

数组/记录集可以是:

姓名,目标,日期

我希望按天,周和周二显示结果一个月。

所以我得到了:

    array_filter($staff_tagret_results,"evaldate");

一个功能:

    function evaldate($x) {
    if($staff_tagret_results == DAY/WEEK/MONTH){
        return true;
    }
}

但我无法找到如何定位阵列的日期字段并与今天进行比较?

感谢您的任何建议。

阵列内容:

Array(
    [0] => Array(
        [staff_id] => 11[0] => 11[work_date] => 2014 - 02 - 12[1] => 2014 - 02 - 12[target_set] => 115[2] => 115
    ) [1] => Array(
        [staff_id] => 4[0] => 4[work_date] => 2014 - 02 - 12[1] => 2014 - 02 - 12[target_set] => 115[2] => 115
    ) [2] => Array(
        [staff_id] => 9[0] => 9[work_date] => 2014 - 02 - 12[1] => 2014 - 02 - 12[target_set] => 115[2] => 115
    ) [3] => Array(
        [staff_id] => 11[0] => 11[work_date] => 2014 - 02 - 12[1] => 2014 - 02 - 12[target_set] => 115[2] => 115
    ) [4] => Array(
        [staff_id] => 4[0] => 4[work_date] => 2014 - 02 - 12[1] => 2014 - 02 - 12[target_set] => 115[2] => 115
    ) [5] => Array(
        [staff_id] => 9[0] => 9[work_date] => 2014 - 02 - 12[1] => 2014 - 02 - 12[target_set] => 115[2] => 115
    ) [6] => Array(
        [staff_id] => 11[0] => 11[work_date] => 2014 - 02 - 12[1] => 2014 - 02 - 12[target_set] => 240[2] => 240
    ) [7] => Array(
        [staff_id] => 4[0] => 4[work_date] => 2014 - 02 - 12[1] => 2014 - 02 - 12[target_set] => 240[2] => 240
    ) [8] => Array(
        [staff_id] => 9[0] => 9[work_date] => 2014 - 02 - 12[1] => 2014 - 02 - 12[target_set] => 240[2] => 240
    ) [9] => Array(
        [staff_id] => 4[0] => 4[work_date] => 2014 - 02 - 12[1] => 2014 - 02 - 12[target_set] => 180[2] => 180
    ) [10] => Array(
        [staff_id] => 9[0] => 9[work_date] => 2014 - 02 - 12[1] => 2014 - 02 - 12[target_set] => 180[2] => 180
    )
)

1 个答案:

答案 0 :(得分:0)

由于没有足够的声誉,我无法发表评论:

如果您查看原始帖子,您会看到“让您的代码可读”的最重要含义

回到你的问题:

我很困惑为什么你的数组中的每个值都有2 x:

Array ( 
       [staff_id] => 11 [0] => 11
       [work_date] => 2014-02-12 [1] => 2014-02-12
       [target_set] => 115 [2] => 115 ) 

如果我做一个简单的选择查询,我得到:

Array
(
    [0] => Array
        (
            [staff_id] => 4
            [work_date] => 2014-02-18
            [target_set] => 115
        )

    [1] => Array
        (
            [staff_id] => 9
            [work_date] => 2014-02-20
            [target_set] => 115
        )

    [2] => Array
        (
            [staff_id] => 11
            [work_date] => 2014-02-20
            [target_set] => 115
        )

)

如果要对数组进行排序:

foreach ($aArray as $key => $row) {
    $date[$key]    = $row['work_date'];
 }

 array_multisort($date, SORT_DESC, $aArray);

这会让你:

Array
 (
    [0] => Array
        (
            [staff_id] => 9
            [work_date] => 2014-02-20
            [target_set] => 115
        )

    [1] => Array
        (
            [staff_id] => 11
            [work_date] => 2014-02-20
            [target_set] => 115
       )

    [2] => Array
       (
            [staff_id] => 4
            [work_date] => 2014-02-18
            [target_set] => 115
       )

)

这是我怎么做的。可能有一种更简单的方法: - )

标记

编辑:更改了排序方向,以便可以看到数组中的更改