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