fork download
  1. <?php
  2. $rows = array(
  3. array('id'=>1,'item_name'=> 'item name 01','item_group_id'=> 101),
  4. array('id'=>2,'item_name'=> 'item name 02','item_group_id'=> 105),
  5. array('id'=>3,'item_name'=> 'item name 03','item_group_id'=> 101),
  6. array('id'=>4,'item_name'=> 'item name 04','item_group_id'=> 104),
  7. array('id'=>5,'item_name'=> 'item name 05','item_group_id'=> 103),
  8. array('id'=>6,'item_name'=> 'item name 06','item_group_id'=> 105),
  9. array('id'=>7,'item_name'=> 'item name 07','item_group_id'=> 104),
  10. array('id'=>8,'item_name'=> 'item name 08','item_group_id'=> 105),
  11. array('id'=>9,'item_name'=> 'item name 09','item_group_id'=> 102),
  12. array('id'=>10,'item_name'=> 'item name 10','item_group_id'=> 101),
  13. array('id'=>11,'item_name'=> 'item name 11','item_group_id'=> 105)
  14. );
  15.  
  16. $data = array();
  17. foreach ($rows as $row) {
  18. $group_id = $row['item_group_id'];
  19. if (isset($data[$group_id])) {
  20. $data[$group_id]['names'][] = $row['item_name'];
  21. $data[$group_id]['count']++;
  22. } else {
  23. $data[$group_id] = array('names' => array($row['item_name']), 'count' => 1);
  24. }
  25. }
  26.  
  27. $divisor = count($data);
  28. echo "<table border='1'>\n";
  29. while (!empty($data)) {
  30. foreach ($data as $group_id => &$subarray) {
  31. $group_size = max(round($subarray['count']/$divisor), 1);
  32. $group = array_splice($subarray['names'], 0, $group_size);
  33. foreach ($group as $name) {
  34. echo "<tr><td>$group_id</td><td>$name</td></tr>\n";
  35. }
  36. if (empty($subarray['names'])) {
  37. unset($data[$group_id]);
  38. }
  39. }
  40. }
  41. echo '</table>';
  42.  
  43. // your code goes here
Success #stdin #stdout 0.01s 20568KB
stdin
Standard input is empty
stdout
<table border='1'>
<tr><td>101</td><td>item name 01</td></tr>
<tr><td>105</td><td>item name 02</td></tr>
<tr><td>104</td><td>item name 04</td></tr>
<tr><td>103</td><td>item name 05</td></tr>
<tr><td>102</td><td>item name 09</td></tr>
<tr><td>101</td><td>item name 03</td></tr>
<tr><td>105</td><td>item name 06</td></tr>
<tr><td>104</td><td>item name 07</td></tr>
<tr><td>101</td><td>item name 10</td></tr>
<tr><td>105</td><td>item name 08</td></tr>
<tr><td>105</td><td>item name 11</td></tr>
</table>