アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつもお世話になります。

さて、date関数で、曜日を日本語表示でループさせ、日曜日だけ外す方法で悩んでおります。

今日から、順番に日付を表示させるのは、下記でできたのですが、
<?PHP
$nday = mktime();
for($i=0;$i<5;$i++){
print "<option>".date("m月d日 (D)",
mktime(0,0,0,date("m"),date("d")+$i,date("y")))."<br />";
}
?>
例)
04月18日 (Wed)
04月19日 (Thu)
04月20日 (Fri)
04月21日 (Sat)
04月22日 (Sun)

日本語表示にさせようとすると、曜日がループしません。
<?PHP
$nday = mktime();
$youbi = array("日","月","火","水","木","金","土");
for($i=0;$i<5;$i++){
print "<option>".date("m月d日 (".$youbi[date(w)].")",
mktime(0,0,0,date("m"),date("d")+$i,date("y")))."<br />";
}
?>
例)
04月18日 (水)
04月19日 (水)
04月20日 (水)
04月21日 (水)
04月22日 (水)

また、ここから日曜日だけ外すことはできますか?

お手数ですが、ご教示ください。
よろしくお願いいたします。

A 回答 (3件)

//ループの中でいちいちdate("Y")というような意味のない繰り返しがあるので、これらは先に変数に格納します。


$Y = date("Y");
$m = date("m");
$d = date("d");
//曜日を先に配列にいれておくのは正解です。
$youbi = array("日","月","火","水","木","金","土");
//最終的にoptionに入れるようですが、基本的には<option>値</option>というかたちでタグを閉じるのが良いです。
//どちらかといえば、<option value="値">表示</option>という形が良いと思います。
for($i=0;$i<30;$i++){
 $time = mktime(0,0,0,$m,$d+$i,$Y);
 $w = date("w",$time);//曜日取得
 if($w > 0){ //日曜日は0
  $datestr = date("Y年m月d日",$time)."(".$youbi[$w].")";
  print("<option>{$datestr}</option>");
 }
}

こんな感じでしょうか
上記スクリプトは
> $youbi[date(w)]
ここでdate関数内のwが文字列になっていない事が問題じゃないでしょうか。
    • good
    • 0

まぁ、$youbi[date(w)]としてますので、date(w)では今日の曜日しか


ひろえないですね。こんな感じでしょうか。

<?PHP
$youbi = array("日","月","火","水","木","金","土");
for($i=0;$i<5;$i++){
$d=mktime(0,0,0,date("m"),date("d")+$i,date("y"));
print date("m月d日",$d)." (".$youbi[date("w",$d)].")<br />";
}
?>

ちなみにoptionとbrの組み合わせは変だったのでとりあえずbr
にしときました

>日曜日だけ外すことはできますか?
ちょっと状況がわかりかねますが、曜日が0を除外すればよいのでは?

if(date("w",$d)!=0) print date("m月d日",$d)." (".$youbi[date("w",$d)].")<br />";
    • good
    • 0

ちょっとしたサンプルです。



<?php
$nday = mktime();
$youbi = array("日", "月", "火", "水", "木", "金", "土");

for ($i = 0; $i < 15; $i++) {
  $w = (date("w") + $i) % 7;
  if ($w != 0) {
    print date("m月d日 (" . $youbi[$w] . ")",
      mktime(0, 0, 0, date("m"), date("d")+$i, date("y"))) . "<br />";
  }
}
?>

(注)インデントのため、全角空白を使っています。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!