模式输出卡住

时间:2017-09-13 12:19:30

标签: php arrays for-loop array-key-exists

这一切都很新,但我来了......

我需要使用表(无边框)和for循环来创建2个模式:

  

1
  1 2
  1 2 3
  1 2 3 4
  1 2 3 4 5
  1 2 3 4 5 6

我确实使用了这个(可能不是最简单的方法,但它有效):

<table>
        <b>Patroon I</b>
        <?php
            $pattern = array();
            for($pyramid = 1; $pyramid <=6; $pyramid++){
                $pattern[$pyramid] = $pyramid;
                echo "<tr>
                        <td class='td1'>" . $pattern[1] . "</td>";
                        if(array_key_exists(2, $pattern)){
                            echo "<td class='td1'>" . $pattern[2] . "</td>";
                        }
                        if(array_key_exists(3, $pattern)){
                            echo "<td class='td1'>" . $pattern[3] . "</td>";
                        }
                        if(array_key_exists(4, $pattern)){
                            echo "<td class='td1'>" . $pattern[4] . "</td>";
                        }
                        if(array_key_exists(5, $pattern)){
                            echo "<td class='td1'>" . $pattern[5] . "</td>";
                        }
                        if(array_key_exists(6, $pattern)){
                            echo "<td class='td1'>" . $pattern[6] . "</td>";
                        }
                echo "</tr>";
            }
        ?>
</table>

和其他模式

  

1 2 3 4 5 6
  1 2 3 4 5
  1 2 3 4
  1 2 3
  1 2
  1个

我似乎无法弄清楚 我试图改变前面的代码,试过rsort($ pattern),尝试了很多IF语句,现在我卡住了:S

任何人都有提示吗?

谢谢!

3 个答案:

答案 0 :(得分:3)

你不需要任何数组或花哨的功能,只需要两个嵌套for循环。

<table>
        <?php
            // 1
            // 1 2
            // 1 2 3
            // ...
            $rows = 6;
            for ($row = 1; $row <= $rows; $row++) {
                echo "<tr>";
                for ($col = 1; $col <= $row; $col++) {
                    echo "<td class='td1'>" . $col . "</td>";
                }
                echo "</tr>";
            }
        ?>
</table>

<br />

<table>
        <?php
            // 1 2 3 4 5 6
            // 1 2 3 4 5
            // 1 2 3 4
            // ...
            $rows = 6;
            for ($row = $rows; $row > 0; $row--) {
                echo "<tr>";
                for ($col = 1; $col <= $row; $col++) {
                    echo "<td class='td1'>" . $col . "</td>";
                }
                echo "</tr>";
            }
        ?>
</table>

在平衡表行的结束行标记之前添加以下代码。

if ($span = $rows - $row)
    echo  "<td colspan='$span'></td>";

答案 1 :(得分:1)

尝试使用2个循环来获取输出。不要使用数组

HttpRuntime.Cache.Insert()

答案 2 :(得分:0)

<?php
$pattern=array(1,2,3,4,5,6);
//var_dump($pattern);
 for($pyramid1 = 6; $pyramid1 >=0; $pyramid1--){
     echo "<tr>
            <td class='td1'>";
          for($i = 0; $i <=$pyramid1; $i++){
    echo  $pattern[$i] ;
          }
          echo "</td>";
     echo "</tr>";
       } 
      ?>
       </table>