我有一个用PHP编写的表单,包含以下数组和两个变量: startDate和endDate。
我想做的是显示用户定义日期范围内的唯一日期。
$startDate = "2013-03-08";
$endDate = "2013-03-12";
Array
(
[0] => 2013-03-06|Lorem|Mom|01:45
[1] => 2013-03-07|ipsum|Dad|01:00
[2] => 2013-03-08|dolor|Dad|01:45
[3] => 2013-03-09|sit|Dad|01:00
[4] => 2013-03-10|amet|Mom|01:45
[5] => 2013-03-11|Lorem|Mom|01:45
[6] => 2013-03-12|ipsum|Mom|01:00
[7] => 2013-03-13|dolor|Dad|01:45
[8] => 2013-03-14|sit|Mom|01:00
[9] => 2013-03-15|amet|Mom|01:45
)
发布表单后,数组将如下所示:
Array
(
[0] => 2013-03-08|dolor|Dad|01:45
[1] => 2013-03-09|sit|Dad|01:00
[2] => 2013-03-10|amet|Mom|01:45
[3] => 2013-03-11|Lorem|Mom|01:45
[4] => 2013-03-12|ipsum|Mom|01:00
)
实现这一目标的最简单方法是什么?
有什么想法吗?
/的Janne
答案 0 :(得分:2)
我建议使用array_filter()
函数。
$startDate = strtotime('2013-03-08');
$endDate = strtotime('2013-03-12');
$array = array(...); // your input array
$filteredArray = array_filter($array, function($value) use ($startDate, $endDate) {
$valArray = explode('|', $value);
$date = strtotime($valArray[0]);
return ($date >= $startDate && $date <= $endDate);
});
请注意,以上内容适用于PHP&gt; = 5.3.0对于旧版本,您必须使用命名函数替换匿名函数并将其调用如下:
$startDate = strtotime('2013-03-08');
$endDate = strtotime('2013-03-12');
$array = array(...); // your input array
$filteredArray = array_filter ($array, 'filterArray');
function filterArray ($value) {
global $startDate;
global $endDate;
$valArray = explode('|', $value);
$date = strtotime($valArray[0]);
return ($date >= $startDate && $date <= $endDate);
}
答案 1 :(得分:0)
你可以这样做:
让$ date成为你的输入数组
$dates = array(
'0' => '2013-03-06|Lorem|Mom|01:45',
'1' => '2013-03-07|ipsum|Dad|01:00',
'2' => '2013-03-08|dolor|Dad|01:45',
'3' => '2013-03-09|sit|Dad|01:00',
'4' => '2013-03-10|amet|Mom|01:45',
'5' => '2013-03-11|Lorem|Mom|01:45',
'6' => '2013-03-12|ipsum|Mom|01:00',
'7' => '2013-03-13|dolor|Dad|01:45',
'8' => '2013-03-14|sit|Mom|01:00',
'9' => '2013-03-15|amet|Mom|01:45)'
);
$startDate = "2013-03-08";
$endDate = "2013-03-12";
$new_startDate = strtotime($startDate);
$new_endDate = strtotime($endDate);
$user_dates = array();
foreach ($dates as $date) {
$date_values = explode('|', $date);
$current_date_value = $date_values[0];
$current_date_value = strtotime($current_date_value);
if ($current_date_value >= $new_startDate && $current_date_value <= $new_endDate) {
$user_dates[] = $date;
}
}
$user_dates
将保留您需要的日期
希望这可以帮助你:)