Вертикальный алфавит PHP с использованием цикла FOR

Я пытаюсь сделать скрипт на PHP, который будет генерировать таблицу с вертикальным алфавитом в нем. Он будет просто отображать буквы от A до Z, а когда дело доходит до Z, он сбрасывается и начинается с A снова. У меня проблема с этим, потому что я могу повторить это только дважды, тогда во всех клетках есть нежелательные признаки. Я повторяю письмо, используя их HTML-коды ASCII, где знак A - & # 65, а знак Z - & # 90.

Вот код, который у меня есть до сих пор, спасибо за помощь.

<!DOCTYPE html>
<html>

<head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
    <title>Vertical alphabet</title>
</head>
<body>
    <form method="post">
        <input type="number" placeholder="COLUMNS" name="cols" />
        <input type="number" placeholder="ROWS" name="rows" />
        <input type="submit" value="Create table" /><br><br>
    </form>

        <?php
            if(isset($_POST['rows']) && isset($_POST['cols'])) {
                $col = $_POST['cols'];
                $row = $_POST['rows'];

                echo ("<table rules='all'>");

                for($i = 1; $i<$row+1; $i++) {
                    echo ("<tr>");
                    for($c = 0; $c<$col; $c++) {
                        $letter_id = 65;
                        $number = ($i + ($c*$row)-1);
                        $letter = $number + $letter_id;
                        if($letter > 90) {
                            $number = $number - 26;
                            $letter = $letter - 26;
                            echo ("<td>". "&#" . $letter. "</td>");
                        } else {
                            echo ("<td>". "&#" . $letter. "</td>");
                        }
                    }
                    echo ("</tr>");
                }
                echo ("</table>");
            }
        ?>
</body>
</html>

2 ответа

Решение

Не уверен, что вы пытаетесь с $number переменная, но это проблема здесь

$number = 0;

echo ("<table rules='all'>");

for($i = 1; $i<=$row; $i++) {
     echo ("<tr>");
     for($c = 0; $c<$col; $c++) {
          $letter_id = 65;
          $number = $i + ($c*$row);
          $letter = $number + $letter_id;
          while($letter > 90) {
                $letter = $letter - 26;
          }
          echo ("<td>". "&#" . $letter. "</td>");
     }
     echo ("</tr>");
}

echo ("</table>");

ОБНОВЛЕНО:

Теперь вертикаль, попробуйте это...

Потому что $ номер всегда рос.
Первый AZ, $ число между 0 и 25, вы идете в другом случае, и это нормально.
Второй номер AZ, $ находится между 26 и 51, вы идете в случае, если вы удаляете 26, и ваш отпечаток в порядке.

Следующее число $ в 52, как и раньше, вы идете в случае if и пытаетесь напечатать 27-ю букву алфавита ^^

Другие вопросы по тегам