php数组\按日期筛选

php数组\按日期筛选,php,mysql,arrays,date,Php,Mysql,Arrays,Date,PHP新手,所以不确定这是否是最好的方法。基本上我有一个带有结果的记录集,现在我可以做3到4个查询&根据需要返回结果,但我认为如果有一个查询并根据需要在数组中过滤结果会更有效 我将结果放入一个数组中,现在我希望按天、周和月显示结果,因此我有理由按天、周和月循环数组3次,而不是对数据库进行3次调用 第一个问题,这是PHP中最好的方法吗 第二,我不知道如何使用数组过滤器($array\u name,DATE?),我无法让日期部分正常工作 阵列/记录集可以是: 姓名、目标、日期 我想按天、周和月展示这

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

我将结果放入一个数组中,现在我希望按天、周和月显示结果,因此我有理由按天、周和月循环数组3次,而不是对数据库进行3次调用

第一个问题,这是PHP中最好的方法吗

第二,我不知道如何使用数组过滤器($array\u 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
    )
)

由于声誉不足,我无法发表评论:


如果你看一看你原来的帖子,你就会明白“让你的代码可读”是什么意思

回到你的问题:

我不明白为什么数组中的每个值都是2 x:

Array ( 
       [staff_id] => 11 [0] => 11
       [work_date] => 2014-02-12 [1] => 2014-02-12
       [target_set] => 115 [2] => 115 ) 
如果执行简单的select查询,我会得到:

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
       )

)
这就是我要做的。可能有一个更简单的方法:-)

标记


编辑:更改了排序方向,因此数组中的更改是可见的

显示原始ArrayOne的内容,很抱歉,我没有麻烦,因为它只是我要筛选的日期字段。请确保代码可读性不确定此处的含义。我不是要求你编写任何代码,我是在征求意见。尽管我已经按照要求添加了代码示例和数组。我想知道的是,这是否是最好的方法,以及这是否是如何针对数组元素进行过滤的方法?主要是约会。谢谢你,但我觉得这不是我想要的。我想过滤数组,而不是排序。对不起,误会了。您尝试过数组过滤器()吗?您也可以手动执行:
foreach($aArray as$value){if($value['work\u date']==date(“Y-m-d”){$filtered[]=$value;}