<?php
 
//////////////////////////////////////////////////////////
 
// initialization settings
 
ini_set('display_errors'      , 'on'                              );
 
ini_set('error_reporting'     , E_ALL & ~ (E_NOTICE | E_WARNING)  );
 
ini_set('error_reporting'     , E_ALL & ~E_NOTICE                 );
 
ini_set('max_execution_time'  , 0                                 );
 
ini_set('memory_limit'        , -1                                );
 
//////////////////////////////////////////////////////////
 
// required files
 
require_once 'ReportGrouping.php';
 
//////////////////////////////////////////////////////////
 
// main script
 
$records                = [];
 
$records[]              = [
 
                            'FIRST'   => 'Johnny'         ,
 
                            'LAST'    => 'Rocket'         ,
 
                            'EMAIL'   => '[email protected]' ,
 
                            'AGE'     => 32               ,
 
                            'SALARY'  => 45000
 
                          ];
 
$records[]              = [
 
                            'FIRST'   => 'Connie'         ,
 
                            'LAST'    => 'Rocket'         ,
 
                            'EMAIL'   => '[email protected]' ,
 
                            'AGE'     => 22               ,
 
                            'SALARY'  => 55000
 
                          ];
 
$records[]              = [
 
                            'FIRST'   => 'Lonnie'         ,
 
                            'LAST'    => 'Rocket'         ,
 
                            'EMAIL'   => '[email protected]' ,
 
                            'AGE'     => 32               ,
 
                            'SALARY'  => 65000
 
                          ];
 
$records[]              = [
 
                            'FIRST'   => 'Bonnie'         ,
 
                            'LAST'    => 'Socket'         ,
 
                            'EMAIL'   => '[email protected]' ,
 
                            'AGE'     => 12               ,
 
                            'SALARY'  => 75000
 
                          ];
 
$records[]              = [
 
                            'FIRST'   => 'Ronnie'         ,
 
                            'LAST'    => 'Locket'         ,
 
                            'EMAIL'   => '[email protected]' ,
 
                            'AGE'     => 32               ,
 
                            'SALARY'  => 85000
 
                          ];
 
$alwaysBreak            = true;
 
$columns                = [
 
                           'FIRST'   => '',
 
                           'LAST'    => '',
 
                           'EMAIL'   => '',
 
                           'AGE'     => '',
 
                           'SALARY'  => ''
 
                          ];
 
$groups                 = [ 'LAST'      , 'AGE'     ];
 
$map                    = [ 'LAST NAME' , 'AGE'     ];
 
$totals                 = [ 'AGE'       , 'SALARY'  ];
 
$report                 = new ReportGrouping($records, $columns, $groups, $map, $totals, $alwaysBreak);
 
$report->headerCallback = 'outputHeader';
 
$report->lineCallback   = 'outputLine';
 
$report->subTotalField  = 'LAST';
 
?>
 
<!doctype html>
 
<style type="text/css">
 
  body
 
  {
 
    display       : flex;
 
    font          : 11px courier new;
 
    text-align    : left;
 
    unicode-bidi  : embed;
 
    white-space   : pre;
 
  }
 
</style>
 
<body>
 
  <span style="flex:0 0 35%; font-size:9px;"> <?= print_r($report->records, true) ?>
 
  </span>
 
  <span style="flex:0 0 65%;">
 
<?php
 
echo '<table border=0 cellspacing=0 cellpadding=3>'; $report->printReport(); echo '</table>'; ?>
 
  </span>
 
<?php
 
//////////////////////////////////////////////////////////
 
// supporting functionality
 
function outputHeader()
 
{
 
  $html = <<<EOS
 
    <thead>
 
      <tr style="font:19px bold;">
 
        <td valign=bottom>Last Name</td>
 
        <td valign=bottom>First Name</td>
 
        <td valign=bottom>Email</td>
 
        <td align=right valign=bottom>Age</td>
 
        <td align=right valign=bottom>Salary</td>
 
      </tr>
 
    </thead>
 
EOS;
 
  echo $html;
 
}
 
function outputLine($record, $alternate = false, $bold = false) {
 
  $bold     = $bold       ? 'bold'        : 'normal';
 
  $rowclass = $alternate  ? 'altrowcolor' : 'rowcolor';
 
  $html     = "
 
    <tr class=" .  $rowclass . " style='font-weight:" . $bold . ";'>
 
      <td>"             .  $record['LAST']                  . "</td>
 
      <td>"             .  $record['FIRST']                 . "</td>
 
      <td>"             .  $record['EMAIL']                 . "</td>
 
      <td align=right>" .  $record['AGE']                   . "</td>
 
      <td align=right>" .  number_format($record['SALARY']) . "</td>
 
    </tr>";
 
  echo $html;
 
}
 
 
 |