php - 对具有相同列值的行进行分组

标签 php arrays merge grouping

我有一个 PHP 数组,它有几个不同的字段。对于某些行,id 和名称相同,其余数据不同。

我想在 HTML 表格中显示数据,而不是多次列出重复的数据。我意识到我可以使用 colspan/rowspan 来合并表格单元格,但我不确定如何根据匹配值进行计数/求和。

下面是我的表格的样子:

Id      Name     value1      value2       value3
2312     ABC     test        test2         test3   
2312     ABC     XYz          122           211
2455     XYZ     val11        val2          val3

我们将不胜感激。

最佳答案

我可以建议您创建一个新的多维数组并合并具有相同 ID 的数组……剩下的就很容易了。看看我做的例子

<?
 $init_array = array(
  array('id'=>2312, 'name'=>'ABC', 'value1'=>'asda', 'value2'=>'sdf', 'value3'=>'dfg'),
  array('id'=>2312, 'name'=>'ABC', 'value1'=>'asd', 'value2'=>'fgd', 'value3'=>'ret'),
  array('id'=>2455, 'name'=>'XYZ', 'value1'=>'sdgg', 'value2'=>'rew', 'value3'=>'gdg'),
 );
 $formatted_array = array();

 foreach( $init_array as $element ) {
  $formatted_array[ $element['id'] ][] = $element;
 }
?>

<table border="2">
 <? foreach($formatted_array as $row ): ?>
   <tr>
     <td rowspan="<?=count($row)?>"><?=$row[0]['id']?></td>
     <td rowspan="<?=count($row)?>"><?=$row[0]['name']?></td>
     <? foreach( $row as $value ): ?>
      <td><?=$value['value1']?></td>
      <td><?=$value['value2']?></td>
      <td><?=$value['value3']?></td>
      </tr><tr>
     <? endforeach; ?>
   </tr>
 <? endforeach; ?>
</table>

CodePad 中的示例

关于php - 对具有相同列值的行进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12560717/

相关文章:

java - 设置java中主类中一个类中数组的大小

c - 如何检查整数是否是数组中元素的线性组合?

visual-studio-2010 - 使用 hg 将具有存储库的不同项目 merge 为一个解决方案?

python - 使用Python进行归并排序的一个bug

php - 如何制作安全登录页面 (https)

php - 如何让 CKeditor 从 Hspace 和 Vspace 切换到正确的 CSS

java - Mongodb如何查看字段的所有元素是否包含在超集中

javascript - 如何合并两个嵌套的 javascript 对象?

php - 从子查询结果中获取 MAX(value)

php - IIS7如何设置用户访问网络驱动器目录的权限