这是我的$ 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,
我如何连续循环以获得目标输出?
答案 0 :(得分:0)
我假设您的脚本正在尝试找出数组中的哪个时间超出了截止时间(即$default_computed = 9:30:00
)。
考虑到这一点,我建议您对这个问题采取不同的方法,并避免使用字符串操作(使用substr_replace
,explode
等),而开始使用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
条件下直接比较DateTime
和if
对象。
因此,与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].",";
}