質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.92%

PHP 繰り返しの処理の一部にCSSの効果をかけたい

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,116

hiro0208

score 56

1ヶ月分の日と曜日を出力して、今日の日付だけCSSの効果を入れたいのですが、
条件分岐のロジックがうまく組めません。

ご教授いただけないでしょうか?
よろしくお願いいたします。

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>サンプル</title>
</head>
<body>
<?php
$array_week = array('日', '月', '火', '水', '木', '金', '土');
//今月の末日(日数)
$lastday = date('t');
//現在日付の取得
$day = date('j');
//現在日付の曜日
$week = date('w');

echo $day . '<br>';
echo $week;

//echo '<div style = font-weight:bold;>テスト</div>';
echo '<table border="1">' . "\n";
//今月1〜末日のループで、月末まで出力
for ($i = 1; $i <= $lastday; $i++) {
    //今月$i日のタイムスタンプ
    $timestamp = mktime(0, 0, 0, date('n'), $i, date('Y'));
    //日付の取得を変数に代入
    $date = date('m/d', $timestamp);
    //今月$i日の曜日(0~6)
    $week = date('w', $timestamp);
        $style = '';
    //今日の日付の場合
    if ($i == $day) {
        //フォントの太さ・背景色
        $style = ' style="font-weight:bold; color:#0000FF;"';
    }
        echo '<tr>' . "\n"
            . '<td' . $style . '>' . $date . '</td>' . "\n"
            . '<td' . $style . '>' . $array_week[$week] . '</td>' . "\n"
            . '</tr>' . "\n";
}
echo '</table>' . "\n";
?>
</body>
</html>
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

+1

<?php
ini_set('display_errors', true);
error_reporting(E_ALL);

$array_week = ['日', '月', '火', '水', '木', '金', '土'];

$date = new DateTime();
$m = $date->format('m');
$date->setDate($date->format('Y'), $date->format('m'), 1);
?>
<!DOCTYPE HTML>
<html lang="ja">
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            tr {
                background: #FFF;
            }
            tr.today {
                background: #CCC;
            }
        </style>
    </head>
    <body>
        <table>
            <?php while ($date->format('m') <= $m): ?>
                <?php if ($date->format('Y-m-d') == (new DateTime)->format('Y-m-d')): ?>
                    <tr class="today">
                    <?php else: ?>
                    <tr>
                    <?php endif; ?>
                    <td>
                        <?= $date->format('Y-m-d'); ?>
                    </td>
                    <td>
                        <?= $array_week[$date->format('w')]; ?>
                    </td>
                </tr>
                <?php $date->add(new DateInterval('P1D')); ?>
            <?php endwhile; ?>
        </table>
    </body>
</html>

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

check解決した方法

0

styleを初期化して解決しました。
ありがとうございました。

$style = '';

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.92%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る