• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:選択日と終了日を配列で取得したい)

phpで配列に選択日と終了日を取得する方法

このQ&Aのポイント
  • PHPで配列に選択日と終了日を取得する方法を説明します。開始日から終了日までの日付を配列に格納するため、以下のコードを使用します。ただし、2014/10/26が二度表示される問題が発生しています。
  • 開始日から終了日までの日付を配列に格納するために、PHPのmktime()関数を使用します。まず、開始日と終了日をUnixタイムスタンプに変換し、1日ごとに繰り返し処理を行い、それぞれの日付を配列に追加します。
  • しかし、このコードではなぜか2014/10/26が二度表示されてしまいます。これは、終了日を1日進める必要があるためです。終了日をdate()関数を使用して1日進めるように修正すると、問題が解決します。修正後のコードは以下の通りです。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>なぜか、2014/10/26が二つ出現してしまいます。 原因はぱっと思いつかないですが こんな風にしてみてはどうですか? <?PHP $startDay = "2014/10/8"; $endDay = "2014/11/26"; foreach(range(strtotime($startDay),strtotime($endDay),86400) as $val){ $keyDate[]=date("Y/m/j",$val); } print_r($keyDate); ?>

paranoaman
質問者

お礼

有難うございます! 無事直りました!有難うございます! ベストアンサーに選ばせていただきます!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • ONEONE
  • ベストアンサー率48% (279/575)
回答No.1

簡単な回答となってしまいますが、 自分だったら開始日と終了日の差をとって何日か計算する forでその日数分だけ date('Y/m/d',strtotime("開始日+{$i}day")) を回して配列につっこみます。

paranoaman
質問者

お礼

ありがとうございます! やってみます! ご教授いただき有難うございました!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセル2003にて、シートのセル上にあるdate関数の日付の部分を、

    エクセル2003にて、シートのセル上にあるdate関数の日付の部分を、年月日~年月日の日付を指定して、指定した日付ごとに日付が変更された状態で指定した日付分のシート枚数を印刷をしたいと思っていますが、上手く実行できません。※現状は、PCの日付を変更して印刷をしています。 書いたマクロは下記(下矢印)になりますが、修正箇所や良い方法がありましたら、ご伝授宜しくお願い致します。 Sub Test() Dim myPrompt_s As String, myTitle_s As String Dim myPrompt_e As String, myTitle_e As String Dim startDay As Date, endDay As Date, I As Integer On Error GoTo ExitMe '---抽出開始~終了期間を取得します myPrompt_s = "何月何日からですか?" myTitle_s = "印刷開始日付" myPrompt_e = "何月何日までですか?" myTitle_e = "印刷終了日付" startDay = Format(InputBox(myPrompt_s, myTitle_s), "yyyy/m/d") '開始 endDay = Format(InputBox(myPrompt_e, myTitle_e), "yyyy/m/d") '終了 For I = 0 To endDay - startDay Range("C4").Value = Format(startDay + I, "yyyy/m/d") '---印刷します ActiveSheets.PrintOut Next I ExitMe: End Sub

  • 配列のSession格納、及び取得方法について

    お世話になります。 現在Visual Studio 2005でプログラム作成中です。 質問内容は、 配列(文字列を格納)をSessionに渡し、次ページでその配列の値を取得できるかという点です。 ***(a.aspx.vb)抜粋*** Dim a() As String Redim a(DataTable1.Rows.Count) For i As Integer 0 to DataTable1.Rows.Count - 1 a(i) = CType(DataTable1.Rows(i).Item(0)) Next Session("a.list") = a(DataTable1.Rows.Count) Session("a.count") = DataTable1.Rows.Count ***(b.aspx)抜粋*** Dim b() As String = CType(Session("a.list"), String) Dim bCount as integer = CType(Session("a.count"),Integer) Dim Name as String For i As Integer 0 To bCount Name = CType(b(i),String) Next としているのですが、取得できません。 配列に格納されたものをSessionに格納し、取得することは可能なのでしょうか。 また、その他に適切なものがあればご教授ください。 よろしくお願いいたします。

  • 配列の要素に1年の始めから終わりまでの日付を入れたい。

     String date = new String[365]; という配列の各要素に2002.1.1から 2002.12.31までを入れたいのですが。。 int y; //year int m; //month int d; //day for(int i = 0; i < 365; i++){ date[i] = y + "." + m + "." + d; } 上記の様な感じで配列の要素を入れたいと思っているのですが、y , m , d の取得の仕方が全然分かりません。  誰か知っている人がいたら教えてください。また、上記の様な方法でなくても、配列に日付を入れることができたら、どんな方法でも、構いません。 よろしくお願いします。

    • ベストアンサー
    • Java
  • C# 配列の配列(多次元配列?)

    C#において、配列の配列中に格納した値を、検索することを 行いたいのですが、格納した値そのものを見ることができません。 まだ、C#を始めて間もないので、配列に格納する時点で、 不備があるかも知れませんが、お願いします。 やりたいこと ・テキストファイル内にある値を、2次元配列または、多次元配列に格納 ・配列に格納した値で、データチェックなどを行う予定  テキストファイル内のデータは、下記内容となり要素数も固定ではなく変動する   A=1,2,3・・・   B=11,22,33・・・ 実際のソースは、 //配列 ArrayList list = new ArrayList(); //配列格納 1レコード毎用 ArrayList listtmp = new ArrayList(); while ((strGenderTextLine = objReader.ReadLine()) != null) {  string strBuffer;  //「=」前の値格納用変数  string[] strBuffer2; //「=」後の値格納用配列  listtmp=null;  //strtmpに「=」前の値を格納  strtmp = TextLine.Split('=').GetValue(0).ToString();  //strtmp2に「=」後の値を格納(配列)  strtmp2 = TextLine.Split('=').GetValue(1).ToString().Split(',');  for (int i = 0; i <= strtmp2.Length - 1; i ++)  {   //[i,0]に、「=」前の値を代入   if (i == 0)   {   listtmp.Add(strtmp);   }   else   {   listtmp.Add(strtmp2[i].ToString());   }  }  //list配列にlistTmp配列を格納(配列の配列)  list.Add(listtmp);  intT = intT + strtmp2.Length;  //行数カウント  intTLine = intTLine + 1;  } ここから、配列「list」内に入っている値を閲覧することができる方法を教えていただければと思います。 宜しくお願いいたします。

  • 配列のカウント

    こんにちは 初歩的な質問だとは思うのですが…教えて下さい 【 1.以下のような配列を作る 】 $array = array( "1-aaa", "2-aaa", "2-bbb", "2-ccc" ); 【 2.本日の日付を取得 】 $today = date("d",time()); 【 3. arrayの件数分forで回す 】 for ($i = 0; $i < count($array); $i++) { 【 4.explodeで分解 】 $items = explode("*",$array[$i]); 【 5.日付と配列[0]が一致した時に項目表示 】 if($today == $items[0]){ print $items[1]; } という処理を行った時に if($today == $items[0]) に該当するデータ件数というのは 求めることが出来ないものなのでしょうか (今日が2日として、この場合は「3」が欲しい) 前からこういう状況下で該当する件数を求めたい時があっても どうしたらよいのかわからなくて諦めていたのです 絶対ムリなら諦めるので、出来るのかどうか教えて頂けますか?? もし可能であれば、求め方のヒントも頂けると助かります よろしくお願い致します!!

    • ベストアンサー
    • PHP
  • JavaScriptで配列を取得したい

    お世話になります。 データベースから取得したリスト(可変)をフォームに設定したところ、 JavaScriptで配列を参照したところ、リストが1件の場合はエラー、 3件の場合は正常という現象がおき、困っております。 リストが1件の場合でも、配列に認識させたいのですが、 他の箇所も記述が多いためシンプルな手法を探しています。 よろしくお願い致します。 3件のレコードの場合、正常に処理される。 ---- HTML内 -------------- <input type="checkbox" name="chk_sel"> <input type="checkbox" name="chk_sel"> <input type="checkbox" name="chk_sel"> ---- JavaScript内 -------------- function test(){ var obj = document.form1.chk_sel; if (obj != null) { for(i=0;i<obj.length;i++){ if(obj[i].checked == true){ check_num++; } } } } ----------------------------- ■1件のレコードの場合、エラーになる (配列に認識されないらしく、obj.lengthが取得できない) ---- HTML内 -------------- <input type="checkbox" name="chk_sel"> ---- JavaScript内 -------------- function test(){ var obj = document.form1.chk_sel; if (obj != null) { for(i=0;i<obj.length;i++){ if(obj[i].checked == true){ check_num++; } } } } -----------------------------

  • 配列のつなげ方

    配列をつなげて文字列にしたいと思っています。 Dim abc() As String Dim i As String Dim namae As String i=0 ここでDBに接続してループでまわしながらデータを取得してきます。 Do while y > z abc(i) = X i = i+1 loop Xはループがまわる毎に違う値がセットされます。例えば1回目のループでリンゴ、2回目のループでミカンといった具合にです。 つまり、abc(0)=リンゴ、abc(1)=ミカン、abc(2)=メロン といった具合にです。 最終的には namae="リンゴ、ミカン、メロン、・・・・"といった具合にnamaeに代入したいと思っています。namae = abc(0) & "," & abc(1) & ","....と やれば実現できるのはわかります。 Xにはデータがいくつはいっているかわかりません。どうやった式をたてれば、実現できるでしょうか?

  • 配列の値を集めた1つの文字列として取得するには

    Array ( [0] => a [1] => あ [2] => 123 [3] => 55 ) この配列を "a","あ","123","55" といった1つの文字列として取得したいです。 <?php $list = array("a","あ","123",55); $r = ""; for($i=0; $i<count($list); $i++){ $r .= ',"'.$list[$i].'"'; } $r = substr($r,1); echo $r; ?> このような形でできましたが、もっと良い方法はありますか? そして上の方法で良い場合は、下の1~4のどれが一番適切ですか? [1] for($i=0; $i<count($list); $i++){ $r .= ",\"".$list[$i]."\""; } [2] for($i=0; $i<count($list); $i++){ $r .= ',"'.$list[$i].'"'; } [3] foreach($list as $key => $val){ $r .= ",\"".$val."\""; } [4] foreach($list as $key => $val){ $r .= ',"'.$list[$i].'"'; }

    • 締切済み
    • PHP
  • データベースから取得したデータを配列に格納できません。

    jTableにSQL文の結果を表示させようとして結果を以下のように配列に 格納しようとしました。 public String[][] Serch(){ int i=0; String[][] rowData; String str = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=helloTable.mdb"; try { // ドライバクラスをロード Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // データベースへ接続 Connection con = DriverManager.getConnection(str, "", ""); // ステートメントオブジェクトを生成 Statement stmt = con.createStatement(); String sql = "SELECT * FROM ハローテーブル"; ResultSet rs = stmt.executeQuery(sql); while(rs.next()){ // NOを取得 String no = String.valueOf(rs.getInt("NO")); // 言語を取得 String lang = rs.getString("言語"); // メッセージを取得 String msg = rs.getString("メッセージ"); rowData[i][0] = no; rowData[i][1] = lang; rowData[i][2] = msg; i++; } stmt.close(); con.close(); } catch (Exception e) { e.printStackTrace(); } return rowData; } このメソッドで得た配列を表示させようとすると以下の結果が表示されます。 java.lang.NullPointerException 正常なSQL文の結果は以下の通りです。 1 日本語 こんにちは世界 2 英語 Hello World 3 ドイツ語 Hallo Welt 配列の行数はSQL文の結果の行数に合わせたかったのですがうまくいきません。 どのように直せばSQL文の結果を配列にすべて格納できるでしょうか?

    • ベストアンサー
    • Java
  • 日付取得、計算及び表示コードが動作しません。

    日付取得、計算及び表示コードが動作しません。 下記のコードのどこが間違っているのか、どなたかお分かりですか? このコードでは、今日の日付をサーバから取得し、それから10日後の日付を計算して表示したいです。 $currentdate = .getdate(); $yyyy = $currentdate["year"]; $mm = $currentdate["mon"]; $dd = $currentdate["mday"]; $int_day = 10; $duedate = .date("y/m/d", mktime(0, 0, 0, $mm, $dd+$int_day, $yyyy)); echo "$duedate" また、上記のコードが動作するようになったとして、表示される日付は「2008/06/10」のようになるかと思いますが、これを「2008年06月10日」のように表示させる方法をご存知でしょうか? >$duedate = .date("y/m/d", mktime(0, 0, 0, $mm, $dd+$int_day, $yyyy)); 上記コードを下記のように変更してもだめです。 >$duedate = .date("y年m月d日", mktime(0, 0, 0, $mm, $dd+$int_day, $yyyy)); よろしくお願いします。

    • ベストアンサー
    • PHP