基本的なことで恐縮ですがご教授ください。
今ドッとインストールでカレンダーを作るコードを見ていたのですが、下のコードでわからないことがあります。
$tail = ''; $lastday = new DateTime('last day of' .$yearMonth . '-1 month'); while($lastday->format('w') < 6){ $tail = sprintf('<td class="gray">%d</td>', $lastday->format('d')).$tail; $lastday->sub(new DateInterval('P1D')); ------------------------------------------------------------------------------------- $head = ''; $firstday = new DateTime('first day of'. $yearMonth. '+1 month'); while($firstday->format('w') > 0){ $head .= sprintf('<td class="gray">%d</td>', $firstday->format('d')); $firstday->add(new DateInterval('P1D'));
変数は毎回上書きされてしまうので、$tailと$headはそれぞれwhile文で.$tail
とするなり.=
とするなり文字列連結してそれまでの書き出し分を補っているのは理解できるのですが、これを自分でやってみようとすると、
$n = ''; $i = 0; while($i < 10){ echo $n = $i.' '.$n; $i++; } //0 1 0 2 1 0 3 2 1 0 4 3 2 1 0 5 4 3 2 1 0 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
こうなってしまい.$n
や.=
つけずecho $n = $i.' ';
としたほうが0 1 2 3 4 5 6 7 8 9
という狙い通りの出力になります。なぜでしょうか?かなり頓珍漢なことをしてる気がして恐縮ですが、よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/31 09:33