我有一个这样的数组:
array(5) {
[0]=>
string(10) "2018-02-05"
[1]=>
string(10) "2018-02-06"
[2]=>
string(10) "2018-02-07"
[3]=>
string(10) "2018-02-08"
}
我想将另一个日期(2018-02-09)推送到数组,仅当连续日期与新日期最多为5时。所以推2018-02-09
应该没问题,但在那之后,我不应该推2018-02-10
,因为这将是连续6个日期。 Althouh,而不是推2018-02-10
我应该能够推2018-02-11
,因为在5之后有一个免费的日子。
答案 0 :(得分:0)
$thisDay = '2018-02-05';
$datesArray = array();
$datesArray[0] = $thisDay;
$count = 1;
while(count($datesArray) < 5){
$next_date = date('Y-m-d', strtotime($thisDay .' +'.$count.' day'));
$dayofweek = date('w', strtotime($next_date));
if($dayofweek != 6){
$datesArray[] = $next_date;
$count++;
} else {
count++;
}
}
var_dump($datesArray);
U还可以使用DateTime
设置当前日期希望我的回答能帮到你。
答案 1 :(得分:0)
如果连续五天,该功能会添加给定日期:
function array_push_continuous(&$array, $date) {
// shorcut for array with less than 5 dates :
if (count($array) < 5) {
array_push($array, $date) ;
return true ;
}
// shortcut if the last date is different :
if (date("Y-m-d", strtotime(end($array)) + 24*3600) != $date) {
array_push($array, $date) ;
return true ;
}
// check for last 5 continuous :
$lasts = array_reverse(array_slice($array, -5)) ;
$last = array_shift($lasts) ;
foreach ($lasts as $item) {
if (date("Y-m-d", strtotime($item) + 24*3600) == $last) {
$last = $item ;
}else{
array_push($array, $date) ;
return true ;
}
}
return false ;
}
用法:
$array = array(
"2018-02-05",
"2018-02-06",
"2018-02-07",
"2018-02-08",
"2018-02-09",
);
array_push_continuous($array, "2018-02-10") ; // false
array_push_continuous($array, "2018-02-11") ; // true
array_push_continuous($array, "2018-02-12") ; // true
array_push_continuous($array, "2018-02-13") ; // true
array_push_continuous($array, "2018-02-14") ; // true
array_push_continuous($array, "2018-02-15") ; // true
array_push_continuous($array, "2018-02-16") ; // false
array_push_continuous($array, "2018-02-17") ; // true
array_push_continuous($array, "2018-02-18") ; // true
print_r($array);
输出:
Array
(
[0] => 2018-02-05
[1] => 2018-02-06
[2] => 2018-02-07
[3] => 2018-02-08
[4] => 2018-02-09
[5] => 2018-02-11
[6] => 2018-02-12
[7] => 2018-02-13
[8] => 2018-02-14
[9] => 2018-02-15
[10] => 2018-02-17
[11] => 2018-02-18
)
答案 2 :(得分:0)
如果要推送给定日期,则可以使用此功能。
udf