2012-03-04 105 views
0

我使用datetime來存儲每個提供者輸入新數據的日期。使用下面的查詢來拉動的結果:重新排列數組以合併重疊結果

SELECT COUNT(id) AS addedCount, 
date(date_added) AS dateAdded, 
provider_name as provider 
FROM `table` WHERE `table`.`id` IN (SELECT `table`.`id` FROM `table` 
WHERE  `table`.`active` = '1') 

GROUP BY dateAdded 
ORDER BY dateAdded DESC 

數組是這樣的:

array(1343) { 
    [0]=> 
    array(3) { 
     ["addedCount"]=> 
     string(1) "2" 
     ["dateAdded"]=> 
     string(10) "2012-03-03" 
     ["provider"]=> 
     string(5) "Provider_1" 
    } 
    [1]=> 
    array(3) { 
     ["addedCount"]=> 
     string(1) "1" 
     ["dateAdded"]=> 
     string(10) "2012-03-03" 
     ["provider"]=> 
     string(5) "Provider_1" 
    } 
    [2]=> 
    array(3) { 
     ["addedCount"]=> 
     string(1) "1" 
     ["dateAdded"]=> 
     string(10) "2012-03-03" 
     ["provider"]=> 
     string(5) "Provider_2" 
    } 
    [3]=> 
    array(3) { 
     ["addedCount"]=> 
     string(1) "1" 
     ["dateAdded"]=> 
     string(10) "2012-03-03" 
     ["provider"]=> 
     string(5) "Provider_2" 

我需要的結果總「addedCount」的統計,其中「dateAdded」和「供應商」的比賽從而使最終數組的樣子:

addedCount dateAdded provider 
3   2012-03-03 provider_1 
2   2012-03-03 provider_2 

我已經試過不知疲倦地尋找SO和重建陣列,但在花了很多時間,我結束了重建陣列中的原始形式,

提前謝謝!

回答

2

您可以使用數據作爲indexe以組類似的數據,例如:

$groupArray = array(); 
foreach ($providerArr as $provider) 
{ 
    // Using the grouping info (date & name) as a key to our grouping array 

    $key = $provider[ 'dateAdded' ] . $provider[ 'provider' ]; 
    if (!isset($groupArray[ $key ])) 
    { 
     // Our grouping array does not have the specific combination of date & name yet 
     // so save the first occurance of data for this combination. 

     $groupArray[ $key ] = $provider; 
    } 
    else 
    { 
     // The unique combination of date & name already exists so just update the count 

     $groupArray[ $key ][ 'addedCount' ] += $provider[ 'addedCount' ]; 
    } 
} 

// Now print 

foreach ($groupArray as $data) 
{ 
    echo("{$data[ 'addedCount' ]} - {$data[ 'dateAdded'} - {$data[ '$provider' ]}<br/>"); 
} 
+0

優秀!謝謝!我做了一些微小的調整,將數據輸出到另一個數組中,現在完全按照我的需要進行調整。再次感謝! – Mike 2012-03-04 22:30:42