2015-03-29 5 views
2

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

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

<!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> 
+0

havent действительно смотрит на ваш код, но мой arrprach будет чем-то вроде 'foreach (range ('a', 'z') как $ letter) {' –

ответ

1

Не уверен, что вы пытаетесь с переменной $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>"); 

ОБНОВЛЕНО:

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

+0

Переменная $ number сделала именно то, что я хотел, это была вертикальная нумерация, которую вы удалили, так что теперь это не то, что я хотел. Да, это алфавит, но теперь ВЕРТИКАЛЬНО:/Однако, спасибо за помощь –

+0

Это не печатает переменные по вертикали ... – Whirlwind

+0

Функция обновляется и работает красиво: -) ... –

0

Потому что число $ всегда выросло.
Первое число A-Z, $ находится между 0 и 25, вы идете в другом случае, и все в порядке.
Второе число A-Z, $ находится между 26 и 51, вы идете в случае if, вы удаляете 26, а ваш отпечаток - в порядке.

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

+0

Да, я знаю, что ошибка где-то здесь, я пробовал много вещей, но все же без успеха. Я знаю, что не так, но я не знаю, как это исправить:/ –

+0

Посмотрите на модуль: http://php.net/manual/en/language.operators.arithmetic.php – Ludeau

+0

Я знаю модуль, но не знаю, как это может мне помочь –