PHP将儿童阵列与一个通用钥匙合并



我从mySQL表中返回一系列元素,并且数组看起来像这样:

array (
  0 => 
    array (
      'name' => 'BMW',
      'amount' => '5',
    ),
  1 => 
    array (
      'name' => 'Ford',
      'amount' => '2',
    ),
  2 => 
    array (
      'name' => 'BMW',
      'amount' => '4',
    ),
  3 => 
    array (
      'name' => 'Ford',
      'amount' => '8',
    ),
  4 => 
    array (
      'name' => 'Fiat',
      'amount' => '2',
    ),
)

我喜欢将所有数组与相同的"名称"元素合并在一起,并将相应的"量"元素添加在一起,以便上述数组的输出将为:

array (
  0 => 
    array (
      'name' => 'BMW',
      'amount' => '9',
    ),
  1 => 
    array (
      'name' => 'Ford',
      'amount' => '10',
    ),
  2 => 
    array (
      'name' => 'Fiat',
      'amount' => '2',
    ),
)

而不是使用PHP来操纵数据,您可以使用GROUP BY语句直接使用MySQL选择请求的数据。

SELECT name, SUM(amount) total FROM mytable GROUP BY name

SUM()在这种情况下是汇总功能,其他功能也可用。

循环时,您应该能够这样访问数据:

echo $row['name'], $row['total'];

您可以尝试array_merge_recursive();

http://php.net/manual/en/function.array-merge-recursive.php

,然后循环结果阵列和总和元素。

或您使用此代码或我认为下面的解决方案也很合理

$result = array();
foreach ($tab as $key => $elem){
        if (array_key_exists($elem['name'],$result)) {
            $result[$elem['name']] += $elem['amount'];
        } else {
            $result[$elem['name']] = $elem['amount'];
        }
}

相关内容

最新更新