2013-05-03 66 views
-2

缺少元素添加到數組我的小時/分鐘的陣列,添加經由功能

$array = array("09:00","09:05","09:10","09:15","09:20","09:25","09:30","09:35","09:40","09:45","09:50","09:55","10:00","10:05","10:10","10:15","10:20","10:25","10:30","10:35","10:40","10:45","10:50","10:55",15:00","15:05","15:10","15:15","15:20","15:25","15:30","15:35","15:40","15:45"," 15:50","15:55","16:00","16:05","16:10","16:15","16:20","16:25","16:30","16:35","16:40","16:45","16:50","16:55");  

如何可以添加缺少的時間?(從11:00到14點55分)的元素用5不同從一個另一個分鐘。

+0

爲什麼「添加缺少的」時間?這會給你買什麼嗎?如果你只是從頭開始生成完整的數組,那會不會更簡單?你甚至需要一個數組的結果,還是你只是想要一個一個地處理它們? – Jon 2013-05-03 10:16:35

+0

你可以得到第一個和最後一個元素,並簡單地生成新的數組:)。 – nacholibre 2013-05-03 10:16:49

+0

無論如何,如果所有的值都是按順序排列的數字,那麼爲什麼還要把它們全部存儲在一個數組中呢?給定* N *時間,您將始終能夠找到下一個** x **許多值? – Emissary 2013-05-03 10:18:11

回答

0

首先,它應該是:

$array = array("09:00",...); 

其次,你可以只生成整個陣列。如果你絕對必須這樣做,那麼最簡單的方法是循環你已有的數組,然後將缺失的項目添加到新數組中,然後合併它們並對結果數組進行排序。

+0

這只是我的數組怎麼是一個例子,我寫的quickly..sorry,反正它是重要的時間。我從另一個腳本中獲取了這種數組。它不完整。所以我需要找到並添加缺少的值。它應該在一個函數內完成。我來試試您的解決方案..感謝 – Mirela 2013-05-03 10:38:53

0

我認爲人們會搶着回答 - 我的評論代表,但是你把它存儲所有這些時間在陣列中似乎矯枉過正,但要回答這個問題......不一定是最簡單的方法,但最簡單的可讀性是使PHP的日期功能使用:

for($i=strtotime('11:00'),$j=strtotime('15:00');$i<$j;$i+=5*60) 
    $array[] = gmdate('H:i', $i); 
$array = array_unique($array); 
asort($array); 

print_r($array); 

run code

+0

你會在性能上獲得了很多,如果'的strtotime('15:00' )'將外循環。如果不是,它將被評估大約50次,它不是最輕的功能。總體表現不會有太大變化,但仍然如此。 – Nux 2013-05-03 11:44:46

+0

@Nux thx,我很快寫到:P但技術上,所以我已經更新了這篇文章。鑑於上下文,但差異可以忽略不計。 – Emissary 2013-05-03 11:57:41