我有两次获得时间的功能,我希望这个代码打印像这样
Array([0] => 07:00:00 [1] => 08:00:00 [2] => 09:00:00 [3] => 10:00:00 [4] => 11:00:00)
(第一个元素未打印/添加)
以下代码打印如下。
Array([0] => 06:00:00 [1] => 07:00:00 [2] => 08:00:00 [3] => 09:00:00 [4] => 10:00:00 [5] => 11:00:00)
代码
$si="06:00 AM";
$sb="11:00 AM";
$st= date ( 'H:i:s', strtotime ($si) );
$en=date( 'H:i:s', strtotime ($sb ) );
$NoOfHours = $this->getTimesfromRange(date('H:i:s', strtotime($st)),date('H:i:s',strtotime($sb)));
print_r($NoOfHours);
功能得到时间
public function getTimesfromRange($start, $end){
$dates = array($start);
while(end($dates) < $end){
if(date('H:i:s', strtotime(end($dates).' +1 hour'))==$start){
continue;
}else{
$dates[] = date('H:i:s', strtotime(end($dates).' +1 hour'));
}
}
return $dates;
}
问题:如何不在while循环中打印第一个元素,我尝试使用continue但不工作。
答案 0 :(得分:2)
array_shift()函数从数组中删除第一个元素,并返回已删除元素的值。您可以按照以下方式更改功能。您可以找到更多详细信息here
public function getTimesfromRange($start, $end){
$dates = array($start);
while(end($dates) < $end){
$dates[] = date('H:i:s', strtotime(end($dates).' +1 hour'));
}
array_shift($dates);
return $dates;
}
答案 1 :(得分:2)
只需将此代码$dates = array($start);
更改为$dates = [];
即可将$ start存储到您的数组中。你必须像这样修改你的功能, Live demo 。
function getTimesfromRange($start, $end){
$dates = [];
while(end($dates) < $end){
$date = end($dates) != FALSE ? end($dates) : $start;
$dates[] = date('H:i:s', strtotime($date.' +1 hour'));
}
return $dates;
}
您还可以使用
从结果数组中删除第一个元素 array_shift($result);
或unset($result[0]);
或array_slice($result, 1);
。这些都没有被修改。
答案 2 :(得分:1)
如果我理解你的问题,你在数组中得到了正确的日期,但你想要打印除元素0之外的所有内容。
我个人只是复制它并删除元素0。
$NoOfHours = $this->getTimesfromRange(date('H:i:s', strtotime($st)),date('H:i:s',strtotime($sb)));
$printable = $NoOfHours;
unset($printable[0]);
var_dump($printable);
答案 3 :(得分:1)
假设这是您不想显示的第一个值,无论您何时可以使用计数器$i;
public function getTimesfromRange($start, $end){
$dates = array($start);
$i = 0;
while(end($dates) < $end){
if($i != 0){
$dates[] = date('H:i:s', strtotime(end($dates).' +1 hour'));
}
$i++;
}
return $dates;
}
答案 4 :(得分:1)
用于循环以排除[0]
public function getTimesfromRange($start, $end){
$dates = array($start);
For($i=0; $i<count($dates)); $i++){
If($i != 0){
$dates[] = date('H:i:s', strtotime(end($dates).' +1 hour'));
}
}
return $dates;
}