OldSchool1705
@OldSchool1705
I want to become a programmer

Правильный ли я сделал код?

5d810da141173934103020.jpegВроде работает всё, но меня смущает вывод 29 дней и я не понимаю почему ...
.black:hover {
background-color: black;
color: white;
}
.red {
background-color: red;

}
.red:hover{
    background-color: white;
}

echo "<table><tbody>";
  $dayCount =1 ;
  $days = date('t');

  for($i = 0; $i < 7; $i++){
  
  echo "<tr>";
  for($j = 0; $j < 7; $j++){

  if($dayCount == $days) {
  break;
  }
  
  if($j == 6 || $j == 7) {

    
   
 
  echo "<td class='red'>$dayCount</td>";

  } else {
  echo "<td class='black'>$dayCount</td>";
  }
  
  $dayCount++;
  
  }
  }
  echo "</tr></tbody></table>";
  echo "<br>";
  • Вопрос задан
  • 134 просмотра
Решения вопроса 1
Это ужасно.

1. Отделяйте разметку от логики, вы не на реакте. Вынесите ее в отдельный файл, необязательно прикручивать шаблонизаторы, просто в отдельный файл, подключать include.
2. Отвратное форматирование. Казалось бы, мелочь, но дьявол кроется в мелочах, и по факту мелочи - едва ли не самое важное. Почитайте про PSR.
3. Нестрогое сравнение, extend пункта выше. Глаза режет, честно говоря, а еще - увеличивает риск ошибок.
4. Императивный стиль. Хотя бы проверки стоит вынести в предикаты вроде isSomething(), сразу будет читабельней раза в два.
5. Касательно самого алгоритма, решение быстрое и в лоб, но я бы создал матрицу и далее вывел бы ее циклом в шаблоне. Для создания матрицы цикл не нужен, т.к. достаточно заполнить несколько одномерных массивов последовательным рядом чисел и затем их собрать.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы