PHP For Loop, повторяющий массив - PullRequest
0 голосов
/ 11 июня 2018

Я пытаюсь создать систему календарей, которая будет показывать, какие вакансии заказаны на определенные дни, я хочу, чтобы это был горизонтальный календарь, в котором все дни месяцев представлены в виде строки таблицы и дней недели.как следующий ряд.Я отсортировал первую строку, но мне нужно, чтобы вторая строка повторяла массив дней недели до конца месяца.

      //Establish How many days are in the current Month
  $currentMonthDays = date("t");




  $daysOfWeek = array('M','T','W','T','F','Sa','Su');

      echo '<table cellpadding="0" cellspacing="0" border="1" bordercolor="ffffff">
            <tr>';


                    for ($i = 1; $i <= $currentMonthDays; $i++)
                    {

                        echo '<td width="30" align="center">'.$i.'</td>';
                    }

      echo '</tr><tr>';


                    foreach($daysOfWeek as $day){
                    echo '<td width="30" align="center">'.$day.'</td>';
                    }


      echo '</tr>';

Ответы [ 3 ]

0 голосов
/ 11 июня 2018

Попробуйте код ниже

    $currentMonthDays = date("t");

    $daysOfWeek = array('M', 'T', 'W', 'T', 'F', 'Sa', 'Su');

    echo '<table cellpadding="0" cellspacing="0" border="1" bordercolor="ffffff">
        <tr>';

    for ($i = 1; $i <= $currentMonthDays; $i++) {

        if ($i % 7 == 1) 
            echo '</tr><tr>';
        echo '<td width="30" align="center">' . $i . '</td>';
    }

    echo '</tr><tr>';


    foreach ($daysOfWeek as $day) {
            echo '<td width="30" align="center">' . $day . '</td>';
    }


    echo '</tr>';

может быть, вам поможет.

0 голосов
/ 11 июня 2018

Самый простой способ сделать это - использовать класс DateTime и методы форматирования, которые вы использовали для получения количества дней, чтобы также отформатировать дату для вас.

$currentMonthDays = date('t');
$month = date('m');
$year = date( 'Y');

for ($i = 1; $i <= $currentMonthDays; $i++) {
    echo '<td width="30" align="center">'.$i.'</td>';
}
$day = new DateTime();
for ($i = 1; $i <= $currentMonthDays; $i++) {
    $day->setDate( $year, $month, $currentMonthDays);
    // this outputs first 3 letters of day, but you can truncate if you want..
    echo '<td width="30" align="center">'.$day->format('D').'</td>';
}

Вы также можете избежать необходимостидля двух циклов путем объединения двух td с и форматирования ячейки путем добавления элемента br между днем ​​месяца и днем ​​недели или с использованием форматирования CSS.

0 голосов
/ 11 июня 2018

Попробуйте это:

 //Establish How many days are in the current Month
  $currentMonthDays = date("t");
  $daysOfWeek = array('M','T','W','T','F','Sa','Su');
      for ($i = 0; $i <= $currentMonthDays-1; $i++){
          $arrayWeekDays[] = $daysOfWeek[($i%7)];
      }
      echo '<table cellpadding="0" cellspacing="0" border="1" bordercolor="ffffff">
            <tr>';


                    for ($i = 1; $i <= $currentMonthDays; $i++)
                    {

                        echo '<td width="30" align="center">'.$i.'</td>';
                    }

      echo '</tr><tr>';


                    foreach($arrayWeekDays as $day){
                    echo '<td width="30" align="center">'.$day.'</td>';
                    }


      echo '</tr>';

Приветствия:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...