如何在php中以适当的方式显示过滤器数据


How to display filter data in php in a proper manner

我想以专业的方式显示我的数据,缩短代码长度,看起来很专业。我不想重复代码。

下面我粘贴了我的代码。如果有人有什么好主意,请帮助我。

<table>
<?php if(!empty($labour) || !empty($machines) || !empty($materials) || !empty($contractors)){?>
    <tr>
        <th>Id</th>
        <th>Name</th>
        <th>amount_paid</th>
        <th>date</th>
    </tr>
<?php }?>
<?php if(!empty($labour)){  
    $i=1; foreach($labour as $res):?>
    <tr>
        <td><?php echo $i;?></td>
        <td><?php echo $res['LabourCashcredit']['name'];?></td>
        <td><?php echo $res['LabourCashcredit']['amount_paid'];?></td>
        <td><?php echo $res['LabourCashcredit']['date'];?></td>
    </tr>
    <?php $i++; endforeach; 
}?>

<?php if(!empty($machines)){ 
    $i=1; foreach($machines as $res):?>
    <tr>
        <td><?php echo $i;?></td>
        <td><?php echo $res['MachinePayment']['first_name'].' '. $res['MachinePayment']['last_name'];?></td>
        <td><?php echo $res['MachinePayment']['amount_paid'];?></td>
        <td><?php echo $res['MachinePayment']['date'];?></td>
    </tr>
    <?php $i++; endforeach; 
} ?>
<?php if(!empty($materials)){ 
    $i=1; foreach($materials as $res):?>
    <tr>
        <td><?php echo $i;?></td>
        <td><?php echo $res['MaterialPayment']['first_name'].' '. $res['MaterialPayment']['last_name'];?></td>
        <td><?php echo $res['MaterialPayment']['paid_amount'];?></td>
        <td><?php echo $res['MaterialPayment']['date'];?></td>
    </tr>
    <?php $i++; endforeach; 
} ?>

如果你不想重复,这里有一些适合你的特殊情况的方法。

<table>
<?php if(!empty($labour) || !empty($machines) || !empty($materials) || !empty($contractors)):?>
    <tr>
        <th>Id</th>
        <th>Name</th>
        <th>amount_paid</th>
        <th>date</th>
    </tr>
<?php endif; ?>
<?php $items = array(); ?>
<?php
    if(!empty($labour))
      $items[] = array(
          'columns' => array(
              'name', // column 1
              'amount_paid', // column 2
              'date' // column 3
          ),
          'data' => $labour['LabourCashcredit']
      );
   if(!empty($machines))
      $items[] = array(
          'columns' => array(
              'first_name', // column 1
              'amount_paid', // column 2
              'date' // column 3
          ),
          'data' => $machines['MachinePayment']
      );
  // and so on ...
?>
<?php foreach($items as $key => $item_data): ?>
    <tr>
        <td><?php echo $counter // think about some counter here ?></td>
        <?php foreach ($item_data['columns'] as $column): // looping through each column ?>
          <td><?php echo $item_data['data'][$column] // echoing column value ?></td>
        <?php endforeach ?>
    </tr>
<?php endforeach ?>
<table>