2012-07-24 105 views
0

我有一組數據從我的數據庫,它看起來像這樣分裂多維數組

[0] => Array 
    (
     [id] => 40 
     [market] => EUR/USD 
     [date] => 2012-02-29 12:20:34 
     [points] => 42 
    ) 

[1] => Array 
    (
     [id] => 41 
     [market] => EUR/USD 
     [date] => 2012-02-29 13:23:03 
     [points] => 11 
    ) 

,並繼續這樣下去直到該數據庫查詢的一端是像200點的記錄。數據庫包含整個月的信息,並在同一天有多個記錄。

無論如何,我希望能夠通過數組並取出所有信息爲一天(通過爲什麼來自數據庫的信息已經排序DESC)。

我該怎麼做?我已經看過「array_splice」和「array_file」,但我很努力地把它們帶入這個問題。

謝謝。

+0

你爲什麼不從sql獲取它們? – 2012-07-24 13:50:05

+0

@WaqarAlamgir你的意思是每天查詢數據庫嗎?這意味着要立即對數據庫執行20多個查詢,認爲這可能有點多? – ragebunny 2012-07-24 14:08:08

回答

2

你可以做這樣的事情

$output = array(); 
foreach ($input as $row) { 
    $date = substr($row['date'], 0, 10); 
    if(!isset($output[$date])) { 
     $output[$date] = array(); 
    } 
    $output[$date][] = $row; 
} 
print_r($output); 
+0

你能告訴我如何顯示值嗎?我想獲取日期並從陣列中爲每一天的記錄指出。我習慣從我原來的日子獲取數據,但我不知道現在如何訪問數據。 – ragebunny 2012-07-24 14:15:24

+1

foreach($ output as $ date => $ rows) foreach($ rows as $ row) print_r($ row) – Ron 2012-07-24 14:23:36

+0

Spot on buddy。非常感謝您的幫助! – ragebunny 2012-07-25 09:00:48

1

像這樣的事情?

$by_day = array(); 

foreach ($rows as $row) { 
    $by_day[date('Y-m-d', strtotime($row['date']))][] = $row; 
} 
+0

如果你在使用[]之前不初始化數組,你會得到一個錯誤或通知... – Ron 2012-07-24 13:48:46

+1

@Ron,錯了!這不會拋出錯誤或通知。 – Rob 2012-07-24 13:51:10

+1

你說得對。我想,我剛纔經歷過 - 只是測試過它,沒有錯誤!我upvote你:) – Ron 2012-07-24 14:25:22