如何循环条件

时间:2019-09-05 04:02:34

标签: php

这是我的$ update数组

Array
(
[0] => 08:31:08
[1] => 08:32:08
[2] => 08:33:08
[3] => 10:34:08
[4] => 08:51:08
[5] => 08:21:08
[6] => 10:39:08
[7] => 08:41:08
[8] => 08:49:08
[9] => 08:20:08
[10] => 08:11:08
[11] => 10:50:08
)

这是我的代码

$default_computed = 9:30:00
$timin ="";

  for ($x=0; $x < count($update) ; $x++) { 

      if (strtotime($update[$x]) > strtotime($default_computed) ) {

            $timin .= $update[$x].',';
            $replace_timin = substr_replace($timin ,"",-1);
            $updated_timin = explode(",",$replace_timin);
            $late_time_in = count($updated_timin);

            echo "<pre>";
            print_r($update);
            print_r($timin);
            die();
  }
}

我想要此输出,但已经停止了1次

10:34:08,10:39:08,10:50:08,

我如何连续循环以获得目标输出?

2 个答案:

答案 0 :(得分:0)

我假设您的脚本正在尝试找出数组中的哪个时间超出了截止时间(即$default_computed = 9:30:00)。

考虑到这一点,我建议您对这个问题采取不同的方法,并避免使用字符串操作(使用substr_replaceexplode等),而开始使用DateTime类代替:

$default_computed = '9:30:00'; // cutoff time
$cutoff = new DateTime($default_computed); // using DateTime
foreach ($update as $time) { // so each time element inside the array
    $time_in = new DateTime($time); // load each time
    if ($time_in >= $cutoff) { // if this time is beyond the cutoff
        echo $time_in->format('H:i:s'); // output it
    }
}

使用它们非常容易和直接,因为您只需加载时间,就可以在DateTime条件下直接比较DateTimeif对象。

因此,与time in时间相比,其基本上是数组中的每个cutoff

答案 1 :(得分:0)

$update =  array
    (
    '08:31:08',
    '08:32:08',
    '08:33:08',
    '10:34:08',
    '08:51:08',
    '08:21:08',
    '10:39:08',
    '08:41:08',
    '08:49:08',
    '10:50:08'
    );

$default_computed = '9:30:00'; 
$default_computed= date("H:i:s", strtotime($default_computed)); // Convert your string to time


for($i=0; $i < count($update) ; $i++){

    $update[$i]= date("H:i:s", strtotime($update[$i])); //Convert each elements of the array into time format
    if($update[$i]>$default_computed)
    echo $update[$i].",";

}