我有一个包含很多小时的数组:
$hours = array(
'06:00', '06:30', '07:00', '07:30', '08:00', '08:30', '09:00', '09:30',
'10:00', '10:30', '11:00', '11:30', '12:00', '12:30', '13:00', '13:30',
'14:00', '14:30', '15:00', '15:30', '16:00', '16:30', '17:00', '17:30',
'18:00', '18:30', '19:00', '19:30', '20:00', '20:30', '21:00', '21:30',
'22:00', '22:30', '23:00', '23:30', '00:00', '00:30', '01:00', '01:30',
'02:00', '02:30', '03:00', '03:30', '04:00', '04:30', '05:00', '05:30',
);
我想从特定点开始循环,例如'12:30'
我曾尝试使用'continue'(如下所示),但这会被忽略。我有什么想法吗?
foreach ($hours as $hour) {
if ($hour == '12:30') continue;
echo $hour . '<br>';
}
答案 0 :(得分:1)
$hours = array(
'06:00', '06:30', '07:00', '07:30', '08:00', '08:30', '09:00', '09:30',
'10:00', '10:30', '11:00', '11:30', '12:00', '12:30', '13:00', '13:30',
'14:00', '14:30', '15:00', '15:30', '16:00', '16:30', '17:00', '17:30',
'18:00', '18:30', '19:00', '19:30', '20:00', '20:30', '21:00', '21:30',
'22:00', '22:30', '23:00', '23:30', '00:00', '00:30', '01:00', '01:30',
'02:00', '02:30', '03:00', '03:30', '04:00', '04:30', '05:00', '05:30',
);
$start = array_search('12:30',$hours);
foreach($hours as $key => $hour) {
if($key < $start)
continue;
print "$hour\n";
}
或者如评论中所建议的那样(这更快)
$start = array_search('12:30',$hours);
for($i = $start; $i < count($hours); $i++) {
print $hours[$i] . "\n";
}
答案 1 :(得分:0)
更改为:
if ($hour < '12:30') {
continue;
}
您的代码只跳过一次,它不会跳过它之前的所有代码。
另一种方法是获取所需小时的位置,并使用正常的for
循环:
foreach ($i = array_search('12:30', $hours); $i !== false && $i < count($hours); $i++) {
$hour = $hours[$i];
echo $hour . "<br";
}
答案 2 :(得分:0)
首先找到引用&#39; 12:30&#39;的密钥,如果找到,则从该密钥开始循环遍历$ hours数组。
if ( $key = array_search('12:30', $hours) ) {
for ( ; $key < count($hours); $key++ ) {
print $hours[$key] . '<br>';
}
}