2016-11-25 102 views
5

我必须制作一个钻石形的星号,用于表格内的循环。 星号前后必须有空格<td>空格,并使其看起来中心为,所以它看起来像一颗钻石。我怎么做? (我用PHP的HTML代码中。)如何在表格内做一个菱形图案/形状(星号)? (html + php)

代码没有<tr><td>标签,它看起来像一颗钻石,因为它是居中对齐:

<center> 
<?php 
echo "<table border = 1>"; 

    // loop for the pyramid 

     for($i = 1; $i <= 10; $i += 2) { 
      for($j = 1; $j <= $i; $j++) { 
       echo "* "; 
      } 
     echo "<br />"; 
     } 

    // loop for the inverted pyramid, so it looks like a diamond 

    for($i = 7; $i >= 1; $i -= 2) { 
     for($j = 1; $j <= $i; $j++) { 
      echo "* "; 
     } 
    echo "<br />"; 
    } 

echo "</table>"; 
?> 
</center> 

代码与<tr><td>标签,需要“空格“为它看起来像它的中心对齐:

<?php 
echo "<table border = 1>"; 

    // loop for the pyramid 

    echo "<tr>"; 
      for($i = 1; $i <= 10; $i += 2) { 
      echo "<tr>"; 
       for($j = 1; $j <= $i; $j++) { 
        echo "<td>* </td>"; 
       } 
      echo "</tr>"; 
     } 
    echo "</tr>"; 

    // loop for the inverted pyramid, so it looks like a diamond 

    for($i = 7; $i >= 1; $i -= 2) { 
    echo "<tr>"; 
     for($j = 1; $j <= $i; $j++) { 
      echo "<td>* </td>"; 
     } 
    echo "<br />"; 
    echo "</tr>"; 
    } 

echo "</table>"; 
?> 

请帮助!

回答

4

这是新的代码与您的解决方案。我已经添加逻辑把空白td向前和向后*

<?php 
echo "<table border = 1>"; 

    // loop for the pyramid 

    echo "<tr>"; 
    $max = $initAmount = 10; 
      for($i = 1; $i <= $initAmount; $i += 2) { 
       $max = $max -2; 

        $halfTD = (int)$max/2; 
      echo "<tr>"; 
      for($b = 1; $b <= $halfTD; $b++){ 
         echo "<td></td>"; 
        } 
       for($j = 1; $j <= $i; $j++) { 


        echo "<td>* </td>"; 
       } 
       for($b = 1; $b <= $halfTD; $b++){ 
         echo "<td></td>"; 
        } 
      echo "</tr>"; 
     } 
    echo "</tr>"; 

    // loop for the inverted pyramid, so it looks like a diamond 
$max = $initAmount = 10; 
    for($i = 7; $i >= 1; $i -= 2) { 
     $max = $max -2; 
     $diff = $initAmount - $max; 
     $blankTd = $diff/2; 

    echo "<tr>"; 
     for($b = 1 ; $b <= $blankTd; $b++){ 
      echo "<td></td>"; 
     } 
     for($j = 1; $j <= $i; $j++) { 
      echo "<td>* </td>"; 
     } 
     for($b = 1 ; $b <= $blankTd; $b++){ 
      echo "<td></td>"; 
     } 
    echo "</tr>"; 
    } 

echo "</table>"; 
?> 
+0

非常感谢!这帮助了很多。看起来不错!我也想问,你是如何形成变量和逻辑的?你是怎么想出来的? =)我想更多地了解您的解决方案。 =) – Kenny

+0

您好,关于逻辑,我对脚本生成的html做了一些分析,并计算出我们需要的空白TD数量。并根据您的整数值,如10和您的增量值,如2我已经计算出我们需要的总空白TD。我将它除以2,因为我们需要将空白TD的一半向前*放置,并且在*之后放置一半空白TD。对于你的逆金字塔也是如此 – kevin

+0

这真的很有帮助。非常感谢你! – Kenny