-2

コードの長さを短くし、プロフェッショナルなように見えるプロフェッショナルな方法でデータを表示したいのですが、コードを繰り返したくありませんでした。

以下にコードを貼り付けます。だれかが何か最善のアイデアを持っている場合は、私を助けてください.

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

1 に答える 1

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>
于 2012-12-26T12:12:10.813 に答える