2013-04-08 86 views
2

這我相信比標題聽起來有點難,但我可能是完全錯誤的。我有一個這樣的數組:PHP:添加陣列值togather

[["londrina",15],["cascavel",34],["londrina",23],['tiradentes',34],['tiradentes',21]] 

我希望能夠採取共同的價值觀,在這種情況下隆德里納和革命英雄,並添加數字加在一起。我的PHP代碼如下:

$qry = mysql_query("SELECT * FROM bap WHERE semana = '".$week."'"); 
    $rows = array(); 
    while($row = mysql_fetch_array($qry)) { 
     $rows[] = $row; 
    } 

    $resultstr = array(); 

    foreach($rows as $row) { 
     $resultstr[] = '["'.$row['zona'].'",'.$row['numero'].']'; 

    } 
    $result = implode(', ',$resultstr); 
    print '['.$result.']'; 

我不確定是否需要更多信息。該數組以這種格式輸出用於jQuery json圖形插件。讓我知道是否需要更多信息。

回答

3
SELECT zona, 
     SUM(numero) AS sum 
    FROM bap 
WHERE semana = $week 
GROUP BY zona 
+0

說未定義索引:numero – watzon 2013-04-08 15:18:29

+0

是您的列叫做numero?從你的代碼看,它是;但是,如果不是,那麼替換爲您想要總結的適當列 – 2013-04-08 15:21:52

+0

是的,那就是collumns名稱 – watzon 2013-04-08 15:22:29

4

試試這個:

$arr = [["londrina",15],["cascavel",34],["londrina",23],['tiradentes',34],['tiradentes',21]]; 
$new_arr = []; 

foreach ($arr as $a) { 

    list($name, $num) = $a; 

    if (!isset($new_arr[$name])) { 
     $new_arr[$name] = 0; 
    } 

    $new_arr[$name] += $num; 
} 

var_dump($new_arr); 

編輯OP

使用的全部這段代碼,應該給期望的結果:

$qry = mysql_query("SELECT * FROM bap WHERE semana = '".$week."'"); 

while ($row = mysql_fetch_array($qry)) { 

    $rows[] = array($row['zona'], $row['numero']); 
} 

$new_arr = []; 

foreach ($rows as $a) { 

    list($name, $num) = $a; 

    if (!isset($new_arr[$name])) { 
     $new_arr[$name] = 0; 
    } 

    $new_arr[$name] += $num; 
} 

var_dump($new_arr); 
+0

人你這麼快:p – 2013-04-08 15:11:23

+0

哈哈,我想我是,2分鐘,從來沒有回答過這麼快 – Ozzy 2013-04-08 15:19:14

+0

這是行不通的...我編寫的PHP代碼輸出數組並試圖將您的代碼合併到我的代碼中給我提供了錯誤警告:爲foreach提供的無效參數() – watzon 2013-04-08 15:20:21