2016-11-25 26 views
5

Tôi phải tạo một dấu hoa thị hình kim cương dùng cho vòng lặp, bên trong một bảng. Nó phải có các khoảng trống "<td>" trước và sau dấu hoa thị để di chuyển và làm cho nó trông trung tâm, do đó, nó trông giống như một viên kim cương. Làm thế nào để làm điều đó? (Tôi sử dụng PHP bên trong một mã HTML.)Làm thế nào để làm một mẫu/hình dạng kim cương (dấu hoa thị) bên trong một bảng? (html + php)

Mã mà không <tr><td> thẻ, nó trông giống như một viên kim cương vì nó được liên kết trung tâm:

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

Mã với <tr><td> thẻ, cần " dấu cách "cho nó trông giống như được căn giữa:

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

Xin vui lòng trợ giúp!

Trả lời

4

Đây là mã mới với giải pháp của bạn. Tôi đã thêm logic để đặt td trống về phía trước và lùi về phía sau *

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

Cảm ơn bạn rất nhiều! Điều này đã giúp rất nhiều. No trông tuyệt! Tôi cũng muốn hỏi, bạn đã hình thành các biến và logic như thế nào? Làm thế nào bạn đã bắt kịp? =) Tôi muốn hiểu thêm về giải pháp của bạn. =) – Kenny

+0

Bạn hoan nghênh, Vâng về logic, tôi đã thực hiện một số phân tích để html được tạo ra bởi kịch bản và tính toán số lượng TD trống mà chúng ta cần. và dựa trên các giá trị số nguyên của bạn như 10 và các giá trị gia tăng của bạn như 2 tôi đã tính tổng số TD trống mà chúng tôi cần. và tôi đã chia nó cho 2 bởi vì chúng ta cần đặt một nửa số lượng trống của TD về phía trước * và một nửa TD trống sau *. và ngược lại với kim tự tháp đảo ngược của bạn – kevin

+0

Điều này thực sự hữu ích. Cảm ơn nhiều! – Kenny

Các vấn đề liên quan