PHP如何在while循环中跳过第一个元素

时间:2017-06-09 15:12:07

标签: php arrays loops time while-loop

我有两次获得时间的功能,我希望这个代码打印像这样

  

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但不工作。

5 个答案:

答案 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;
    }