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

时间:2012-12-26 11:52:02

标签: php

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

下面我粘贴了我的代码。如果任何一个团体有任何好主意,请帮助我。

<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; 
} ?>

1 个答案:

答案 0 :(得分:0)

如果您不想重复自己,请根据您的具体情况采取某种方法。

<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>