2013-01-08 58 views
1

我有一個這樣的時間戳一週的數組2013-01-07 06:55:34我想做的是在一天之內將陣列分成7個不同的陣列。這在PHP中可能嗎?將日期分組到不同陣列日期

我如何創建陣列是這樣

$sqlCount="SELECT time_stamp FROM `download_log` WHERE WEEK(`time_stamp`) = WEEK(CURRENT_TIMESTAMP) AND YEAR(`time_stamp`) = YEAR(CURRENT_TIMESTAMP)"; 
$queryCount = mysql_query($sqlCount) or die(mysql_error()); 


$dates = array(); 

while(($row = mysql_fetch_assoc($queryCount))) { 
    $dates[] = $row['time_stamp']; 
} 

而我想是7個不同的排列像$monday $tuesday etc.而且每個陣列有天從$dates陣列

+1

你能提供例如輸入和預期的輸出? – Josh

+1

yup並且很簡單,還有一個循環和一個if ...嘗試做它併發布你的代碼,即使它失敗了,然後我們可以幫助解決代碼並解釋什麼是錯誤的,這是學習的最佳途徑^^ – Naryl

回答

1

我不知道如果我是什麼,我想很清楚,但我想通了,這是我在做什麼

$mon = array(); 
$tue = array(); 
$wed = array(); 
$thur = array(); 
$fri = array(); 
$sat = array(); 
$sun = array(); 

foreach ($dates as $value) { 

if(date('D', strtotime($value)) == 'Mon') { 
    $mon[] = $value; 
    } 
    if(date('D', strtotime($value)) == 'Tue') { 
    $tue[] = $value; 
    } 
    if(date('D', strtotime($value)) == 'Wed') { 
    $wed[] = $value; 
    } 
    if(date('D', strtotime($value)) == 'Thu') { 
    $thur[] = $value; 
    } 
    if(date('D', strtotime($value)) == 'Fri') { 
    $fri[] = $value; 
    } 
    if(date('D', strtotime($value)) == 'Sat') { 
    $sat[] = $value; 
    } 
    if(date('D', strtotime($value)) == 'Sun') { 
    $sun[] = $value; 
    } 

} 
3

這可能是使用PHP的date()函數和一些循環操作輕鬆完成。

東西沿着以下的線應該讓你去:

// array to hold all of the dates in 
$dates = array('Mon' => array(), 'Tue' => array(), 'Wed' => array(), 
       'Thu' => array(), 'Fri' => array(), 'Sat' => array(), 
       'Sun' => array()); 

while(($row = mysql_fetch_assoc($queryCount))) { 
    // get the day of the week for the current element 
    $dayOfWeek = date('D', $row['time_stamp']); 

    // add the current element to the correct day-entry in the `$dates` array 
    $dates[$dayOfWeek][] = $row; 
} 

這是可以適用於使用你喜歡的任何指標(以下簡稱周的名字,全weeknames樣本模板,數字天星期等)。查看date()功能的可用值,並根據您的需求進行調整。

編輯
我已經定製了自己原來的/通用for -loop以上,以滿足您while -loop這是一個從數據庫中讀取。

0

爲什麼不使用MySQL中內置的WEEKDAY()函數?

$sqlCount = "SELECT WEEKDAY(`time_stamp`) AS 'weekday', `time_stamp` ..."; 

然後,您可以按日期,就像

$dates[$row['weekday']][] = $row['time_stamp']; 

另一種是內置DATE_FORMAT()功能。使用後(第二個參數)將使您縮短星期幾的名稱。

$sqlCount = "SELECT DATE_FORMAT(`time_stamp`,'%a') AS 'weekday', `time_stamp` ...";