2014-06-27 39 views
1

內的特定點foreach循環我有一個包含很多小時的數組:繼續從陣列

$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' 。

我試圖使用'繼續'(如下),但這被忽略。任何想法我做錯了什麼?

foreach ($hours as $hour) { 
    if ($hour == '12:30') continue; 
    echo $hour . '<br>'; 
} 
+0

你可以調試'$小時'是'12:30'嗎? if語句比較'12:30'和'12:30'會產生什麼結果? –

+0

所以你的目標是從12:30向前(或不包括12:30)輸出所有時間? –

+0

包括12:30是的。 – user1444027

回答

0

首先找到提到'12:30' ,並且,如果找到了,循環從該鍵開始的$ hours數組。

if ($key = array_search('12:30', $hours)) { 
    for (; $key < count($hours); $key++) { 
    print $hours[$key] . '<br>'; 
    } 
} 
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

從'$ start'開始直到'count($ hours)'而不是用'continue'打擾,循環使用不需要的東西可能更好。 –

+1

..但是,'array_search()'是這樣做的方法。 –

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"; 
}