2

我相信这比标题听起来要难一些,但我可能完全错了。我有一个这样的数组:

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

我希望能够采用共同的值,在这种情况下是 londrina 和 tiradentes,并将这些数字相加。我的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 图形插件。让我知道是否需要更多信息。

4

2 回答 2

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);
于 2013-04-08T15:10:09.470 回答
3
SELECT zona,
       SUM(numero) AS sum  
  FROM bap 
 WHERE semana = $week 
 GROUP BY zona
于 2013-04-08T15:15:37.013 回答