如何循环动态列表?

时间:2016-01-28 04:57:38

标签: php html

如果变量$ single = 1且变量$ double = 2

我想要一张像这张图片的结果:http://imgur.com/U0zxCgI

我尝试这样的代码:

<?php
    $Sgl = 1;
    $Dbl = 2;
    $Trp = 0;
?>

<table border="1">
    <tr>
        <td>No</td>
        <td>Room Type</td>
        <td>Room Grade</td>
        <td>Gender</td>
        <td>Family Name</td>
        <td>First Name</td>
    </tr>
    <?php 
        $no = 1;
        for($i=0; $i< ($Sgl ? $Sgl : ($Dbl ? $Dbl : ($Trp ? $Trp : 0))); $i++) {
            if($Sgl)
                $room_type = 'Single';
            else if($Dbl)
                $room_type = 'Double';
            else if($Trp)
                $room_type = 'Triple';
    ?>
    <tr>
        <td><?php echo $no; ?></td>
        <td><?php echo $room_type; ?></td>
        <td>Standart Room</td>
        <td>
            <select>
              <option selected>Mr.</option>
              <option>Ms</option>
              <option>Mrs</option>
              <option>Mstr</option>
            </select>
        </td>
        <td>
            <input type="text" class="" placeholder="Family Name">
        </td>
        <td>
            <input type="text" class="" placeholder="First Name">
        </td>
    </tr>
    <?php 
            $no++;
        } 
    ?>

</table>

但似乎代码仍然是错误的

如何将结果保存为上图?

任何帮助都非常感激?

干杯

4 个答案:

答案 0 :(得分:1)

试试这个:

<?php
    $Sgl = 1;
    $Dbl = 2;
?>

<table border="1">
    <tr>
        <td>No</td>
        <td>Room Type</td>
        <td>Room Grade</td>
        <td>Gender</td>
        <td>Family Name</td>
        <td>First Name</td>
    </tr>
    <?php       
        $total = ($Sgl * $Sgl) + ($Dbl * $Dbl);
        for($i=1; $i <= $total; $i++) {
            $room = 'Standart Room';
            if($i == $Sgl && $Sgl == 1){
                $no = $i;
                $roomType = 'Single';
            }elseif ( ($i%$Dbl) == 0) {
                if($i == $Dbl){
                    $no = $i;
                    $roomType = 'Double';
                }else{
                    $no = $i - 1;
                    $roomType = 'Double';
                }
            }else{
                $no = $room = '';
                $roomType = '';
            }
    ?>
    <tr>
        <td><?php echo $no;?></td>
        <td><?php echo $roomType;?></td>
        <td><?php echo $room;?></td>
        <td>
            <select>
              <option selected>Mr.</option>
              <option>Ms</option>
              <option>Mrs</option>
              <option>Mstr</option>
            </select>
        </td>
        <td>
            <input type="text" class="" placeholder="Family Name">
        </td>
        <td>
            <input type="text" class="" placeholder="First Name">
        </td>
    </tr>
    <?php 
            $no++;
        } 
    ?>

</table>

输出:

与图像显示相同。

注意:

这个答案采用变量$ single = 1和变量$ double = 2。

已修改:这是完全动态的代码。干杯...

<?php
   $counter = 0;
   $first =2; $second = 4; $third = 1; $four = 2; $five = 3;
   $common_fields = '<td>
            <select>
              <option selected>Mr.</option>
              <option>Ms</option>
              <option>Mrs</option>
              <option>Mstr</option>
            </select>
        </td>
        <td>
            <input type="text" class="" placeholder="Family Name">
        </td>
        <td>
            <input type="text" class="" placeholder="First Name">
        </td>';
?>

<table border="1">
    <tr>
        <td>No</td>
        <td>Room Type</td>
        <td>Room Grade</td>
        <td>Gender</td>
        <td>Family Name</td>
        <td>First Name</td>
    </tr>       
        <?php 
            if($first){
                for ($i=1; $i <= ($first*1); $i++) { 
                    $counter ++;                   
                    echo "<tr><td>$counter</td><td>First</td><td>First Standard</td>$common_fields</tr>";  
                }
            }

            if($second){
                for ($i=1; $i <= ($second*2); $i++) {
                    if($i%2) {$counter++;}
                    $roomtype = ($i%2) ? 'Second' : '';
                    $room = ($i%2) ? 'Second Standard' : '';
                    $no = (!empty($roomtype)) ? $counter : '';
                    echo "<tr><td>$no</td><td>$roomtype</td><td>$room</td>$common_fields</tr>";  
                }
            }

            if($third){
                for ($i=1; $i <= ($third*3); $i++) {
                    if(($i-1)%3 ==0) {$counter++;}
                    $roomtype = (($i-1)%3 ==0) ? 'Third' : '';
                    $room = (($i-1)%3 ==0) ? 'Third Standard' : ''; 
                    $no = (!empty($roomtype)) ? $counter : '';
                    echo "<tr><td>$no</td><td>$roomtype</td><td>$room</td>$common_fields</tr>";
                }
            }

            if($four){
                for ($i=1; $i <= ($four*4); $i++) {
                    if(($i-1)%4 ==0) {$counter++;}
                    $roomtype = (($i-1)%4 ==0) ? 'Four' : '';
                    $room = (($i-1)%4 ==0) ? 'Four Standard' : '';
                    $no = (!empty($roomtype)) ? $counter : '';
                    echo "<tr><td>$no</td><td>$roomtype</td><td>$room</td>$common_fields</tr>";  
                }
            }

            if($five){
                for ($i=1; $i <= ($five*5); $i++) {                    
                    if(($i-1)%5 ==0) {$counter++;}
                    $roomtype = (($i-1)%5 ==0) ? 'Five' : '';
                    $room = (($i-1)%5 ==0) ? 'Five Standard' : '';
                    $no = (!empty($roomtype)) ? $counter : '';
                    echo "<tr><td>$no</td><td>$roomtype</td><td>$room</td>$common_fields</tr>";    
                }
            }
        ?>
</table>

答案 1 :(得分:1)

试试这个:

<tr>
<td>No</td>
<td>Room Type</td>
<td>Room Grade</td>
<td>Gender</td>
<td>Family Name</td>
<td>First Name</td>
</tr>

<?php
$row_count = 1;
foreach($array as $key => $value):

if($value == 'single'){
    $room_type = "Single";
    $room_grade = "Standard Room";
    $count = 1;
}else if($value == 'double'){
    $room_type = "Double";
    $room_grade = "Standard Room";
    $count = 2;
}

for($i=1;$i<=$count;$i++){
    if($i>1){
        $room_type = "";
        $room_grade = "";
    }
?>
<tr>
    <td><?php echo $row_count; ?></td>
    <td><?php echo $room_type; ?></td>
    <td><?php echo $room_grade;?></td>
    <td>
    <select>
      <option selected>Mr.</option>
      <option>Ms</option>
      <option>Mrs</option>
      <option>Mstr</option>
    </select>
    </td>
    <td>
        <input type="text" class="" placeholder="Family Name">
    </td>
    <td>
        <input type="text" class="" placeholder="First Name">
    </td>
</tr>
<?php

}

endforeach;
?>

答案 2 :(得分:0)

信息有限。如果你能告诉我们你当前的输出会有所帮助。问题似乎出现在你的for循环和条件中。尝试这样的事情。

$Sgl = 1; $Dbl = 2; $Trp = 3;
for ($i=0; $i<3; $i++) {
    switch ($i) {
        case $Sgl:
            $room_type = 'Single';
            break;
        case $Dbl:
            $room_type = 'Double';
            break;
        case $Trp:
            $room_type = 'Triple';
            break;
    }
}

答案 3 :(得分:0)

您可以像这样达到您的要求。就是这样做。以下是您的完整代码。

<table border="1">
<tr>
    <td>No</td>
    <td>Room Type</td>
    <td>Room Grade</td>
    <td>Gender</td>
    <td>Family Name</td>
    <td>First Name</td>
</tr>
<?php 
$no = 1;
foreach($array as $key=>$val){        
    for($i=0; $i< $val; $i++) {
        $room_type = $key;
?>
<tr>
    <td><?php echo $no; ?></td>
    <td><?php echo $room_type; ?></td>
    <td>Standart Room</td>
    <td>
        <select>
          <option selected>Mr.</option>
          <option>Ms</option>
          <option>Mrs</option>
          <option>Mstr</option>
        </select>
    </td>
    <td>
        <input type="text" class="" placeholder="Family Name">
    </td>
    <td>
        <input type="text" class="" placeholder="First Name">
    </td>
</tr>
<?php            
    }
    $no++;
} 
?>

相关问题