- 締切済み
フォームに日付を出力したい
予約フォームを作っております。日付を選択するフォーム箇所に 出力するデータは今日の日付から1週間後から1週間以内を表示する 規則としています。 for ($i = 7; $i < 15; $i++) { $date[$i] = date('Y/m/d (w)', strtotime($i . ' days', time())); } これで任意の日付を出力することはできたのですが(w)の箇所が このままですと曜日が0~6で表示されてしまいます。 $wday = array('日', '月', '火', '水', '木', '金', '土'); と曜日用の配列をつくり置き換えたいのですがどう組み込めばいい ものか教えてください。 また以下のような特定の日付(任意の休日)を設定しその日があれば フォームには表示させないようにする事はどうすれば可能でしょうか? $holiday = array('2009/02/05', '2009/02/15'); 宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- tany180sx
- ベストアンサー率63% (239/379)
やってることは一緒ですけど、 <?php $dates = array(); $wdays = array('日', '月', '火', '水', '木', '金', '土'); $holidays = array('2009/02/05', '2009/02/15'); for ($i = 7; $i < 15; $i++) { $time = strtotime($i . ' days', time()); $date = date('Y/m/d', $time); $wday = $wdays[date('w', $time)]; if (in_array($date, $holidays)) { continue;// holidayが多ければisset($holidays[$date]) } $dates[$i] = $date . '(' . $wday . ')'; } echo '<xmp>' . print_r($dates, true) . '</xmp>';
- koke29
- ベストアンサー率58% (114/196)
曜日の表示部分、これだとうまくいかなかったので分けて $date[$i] = date('Y/m/d', strtotime($i . ' days', time())); $ww[$i] = date('w', strtotime($i . ' days', time())); $wwday = "({$wday[$ww[$i]]})<br>"; print $wwday; で曜日の表示が文字表示になります ※ ほかにもっといい方法があるかもしれません(私も知りたい) 指定日があったら排除の方法は if(in_array($date[$i],$holiday)){ $date[$i] = ""; $wwday = ""; } として、最後に print $date[$i]; print "$wwday"; で 出力したら希望のような表示に一応なります 上にも書いている通り、もっといい方法がある気がするので しばらく待ってみるのも良いかもしれませんが参考になればー
お礼
お返事ありがとうございます。 分解して構築していけばいいのですね~勉強になります! 少々変更しましたがアドバイスを基に以下のようにしたところ思う動作 が実現できました。 for ($i = 7; $i < 15; $i++) { $date[$i] = date('Y/m/d', strtotime($i . ' days', time())); $ww[$i] = date('w', strtotime($i . ' days', time())); $wwday = "({$wday[$ww[$i]]})"; if (in_array($date[$i], $holiday)) { // 単純に空の配列になってしまうのでunsetしました unset($date[$i]); unset($wwday); } else { // ここで新たに配列生成 $date[$i] = $date[$i] . $wwday; } } 他にもスマートな方法があるものかわかりませんがもうしばらく待って みたいと思っております。 ご存知の方がいらっしゃいましたらアドバイス宜しくお願い致します。