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

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

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

1回答

4314閲覧

cakephpでカレンダーにデータ表示

atsupoooon

総合スコア47

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

0クリップ

投稿2016/01/16 20:05

cakephpの2.6.7
phpは5.6で

カレンダーを表示させて、DB内の合計を表示させたいのですが、
なにかいい方法ありますでしょうか。
プラグインでもいいです。

データは、各日付ごとに表示させたいと思っています。

よろしくお願い致します。

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

PHPのdate()とstrtotime()を併用したらどうでしょう。閏年にも対応しています。
それに、カスタマイズも容易です。
(追記:ただし、2038年問題には対応していません。DateTimeクラスを使うのがベターです。)

例えば、次のコードを実行すると、100日前から100日後の日時を表示します。

PHP

1<?php 2// CakePHPでは別途指定するので、いらないかもしれません 3date_default_timezone_set('Asia/Tokyo'); 4 5$from = -100; 6$to = 100; 7for ($i=$from; $i<=$to; $i++) { 8 echo date("Y/m/d H:i:s", strtotime("+$i day")).'<br>'; 9}

また、1ヵ月後の日時を指定したり、ピンポイントで日時を指定することもできます。

PHP

1echo date("Y/m/d H:i:s", strtotime("+1 month")); 2echo date("Y/m/d H:i:s", strtotime("1 January 2016")); 3echo date("Y/m/d H:i:s", strtotime("31 December 2016")); 4 5//実行結果 62016/02/17 11:12:13 72016/01/01 00:00:00 82016/12/31 00:00:00

コード追記

PHP

1[コントローラー] 2 3// sumvalueというバーチャルフィールドを用意 4$this->Num->virtualFields['sumvalue'] = 0; 5 6// modifiedでグルーピングし、valueの合計を取得 7$num = $this->Num->find('all', array( 8 'fields'=> array('Num.id', 'Num.modified', 'sum(Num.value) as Num__sumvalue'), 9 'group' => array('Num.modified') 10)); 11 12// キーをmodified、値をsumvalueとした連想配列$modified_sumvalueを作成 13$results_tmp = Hash::combine($num, '{n}.Num.modified', '{n}.Num.sumvalue'); 14 15// キーをDATETIMEからDATEに変換 16$results = []; 17foreach ($results_tmp as $key => $value) { 18 $results[date('Y-m-d', strtotime($key))] = $value; 19} 20 21// 連想配列をViewで表示できるようにセット 22$this->set(compact('results')); 23 24// 連想配列を確認 25dump($results);

投稿2016/01/17 02:15

編集2016/01/27 09:36
coba-coba

総合スコア1409

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

atsupoooon

2016/01/17 09:33

コメントありがとうございます。 今はカレンダーは下記のコードになります。 参考サイトから、引っ張ってきたものです。 質問してから少し進みました。 <?php // 現在の年月を取得 $year = date('Y'); $month = date('n'); // 月末日を取得 $last_day = date('j', mktime(0, 0, 0, $month + 1, 0, $year)); $calendar = array(); $j = 0; // 月末日までループ for ($i = 1; $i < $last_day + 1; $i++) { // 曜日を取得 $week = date('w', mktime(0, 0, 0, $month, $i, $year)); // 1日の場合 if ($i == 1) { // 1日目の曜日までをループ for ($s = 1; $s <= $week; $s++) { // 前半に空文字をセット $calendar[$j]['day'] = ''; $j++; } } // 配列に日付をセット $calendar[$j]['day'] = $i; $j++; // 月末日の場合 if ($i == $last_day) { // 月末日から残りをループ for ($e = 1; $e <= 6 - $week; $e++) { // 後半に空文字をセット $calendar[$j]['day'] = ''; $j++; } } } ?>--> カレンダーの表示はこちらで問題なくできました。 で、各日付ごとのデータのデータが表示できません。。 下記のテーブルのデータを日付ごとに合計して、 カレンダーの日付に表示させたいのです。 テーブル名:num id value →合計を出したい created modified →ここの値が今日のもの 合計を出すために、下記のvirtualFieldsフィールを使って計算しましたが、 すべての合計はでるのですが、日付ごとができません。 http://oshiete.goo.ne.jp/qa/8987312.html
coba-coba

2016/01/18 02:38

あとはデータ表示だけですね。 modifiedごとにグルーピングして、グループごとのvalueの合計を取得するということでしょうか。 virtualFieldsで計算するコードも見せて頂けますか? テーブル名がnumではなくnumsの場合ですが、次のような感じになると思います。 // sumというバーチャルフィールドを用意 $this->Num->virtualFields['sum'] = 0; // modifiedでグルーピングし、valueの合計を取得 $num = $this->Num->find('all', array( 'fields'=> array('Num.id', 'Num.modified', 'sum(Num.value) as Num__sum'), 'group' => array('Num.modified') )); // 確認 Debugger::dump($num);
atsupoooon

2016/01/18 06:29

回答ありがとうございます。 すいません。テーブルはnumsです。 nullになります。 view側では、<?php echo $num;?>と記述しました。 記述した行がエラーになります。 変数が定義されていません。と。Undefined variable $this->Num->virtualFields['sumvalue'] = 0; $data=$this->set('data', $this->Num->find('all', array( 'fields'=> array('sum(Num.value) as sumvalue'), ))); これに関しては、グルーピングができていなかったため、テーブル内すべての合計が 返ってきたかと思います。 コントローラー側でsetがいるのでしょうか?
atsupoooon

2016/01/18 06:31

上記のvirtualFieldsですが、データはこの記述で表示できました。 <?php echo $data[0][0]["sumValue"];?> これを教えて頂いた記述でもview側で試しましたが、上記同様のエラーでした。
coba-coba

2016/01/18 08:28

まず、私のコードを先に見ていきますね。 ご存じのこともあるかもしれませんが、ポイントだと思う点は触れていきます。 私の書いたコードでは、まだViewに値を渡していません。 次の一行を最後に付け足すと、Viewで表示できるようになります。 $this->set(compact('num')); また、Viewで<?php echo $num;?>としても表示できません。 $numの中身は連想配列なので、キーを指定するか、foreach等で一つずつ中身を出す必要があります。 このコメントの上記のコード($this->set~~~)を付け足した後に、Viewで次のコードを実行すると、Viewで$numの中身がどのようなものか確認することができます。 <?php Debugger::dump($num); または、確認ではなく実際に出力したい場合は、次のコードで出力できると思います。 <?php foreach($num as $value) { echo $value['Num']['sum']; } これはもしかしたら階層が違うかもしれないので、Debugger::dump($num);で、$num(連想配列)の階層を確かめてから出力する方がいいです。
coba-coba

2016/01/18 08:40 編集

次に、KawataniAtsushiさんのコードを見てみますね。 まず、次のコードは問題ありません。 $this->Num->virtualFields['sumvalue'] = 0; ただ、次のコードでは、お気付きの通りグループ指定していないため、期待通りの出力が得られません。 $data=$this->set('data', $this->Num->find('all', array( 'fields'=> array('sum(Num.value) as sumvalue'), ))); また、as sumvalueとしていますが、as NUM__sumvalueとします。 どちらでも出力されますが、取得する連想配列の階層が変わります。 as NUM__sumvalueの方が分かりやすく、おすすめです。 [as sumvalueの場合の出力] array( (int) 0 => array( 'Num' => array( 'id' => ID ), (int) 0 => array( 'sumvalue' => 合計 ) ) [as NUM__sumvalueの場合の出力] array( (int) 0 => array( 'Num' => array( 'id' => ID, 'sumvalue' => 合計 ) ) ) なお、この点についてですが、<?php echo $data[0][0]["sumValue"];?>で出力されたのはas sumvalueと書いたからです。 as NUM__sumvalueと書いていたら、<?php echo $data[0]["Num"]["sumvalue"];?>で1つデータが取れます。 更に、長くなったついでですが、Viewに値を渡すときは、$data=$this->set~~~とはしません。$this->set~~~のみで結構です。
coba-coba

2016/01/18 08:43

一つずつ抑えていけば大丈夫だと思いますが、不明点があればおっしゃってくださいね。
atsupoooon

2016/01/18 09:26

何度もありがとうございます。 コードをみていただける方が周りにいないので、 大変感謝いたします。 早速試してみます。 また、結果の方をコメント書きます。
atsupoooon

2016/01/18 14:05

何度もすいません。 上記の記述内容を記述致しましたが、値は表示されましたが 合計の表示が「18120131421661」のようになってしまいます。 自分なりに考えた結果・・・ なにが問題かわかりました。 【カレンダーのループ内に合計のループを記述しているためかと。】 (日付ごとのデータは返ってきました。) そのため、プラスで条件分岐を書く必要があると思いますが、 modifiedとカレンダーの日付が同じものを表示しろ。 という形になるかと思いますが、 modifiedが文字列(多分。。)のため dateに変換または整数値にしないといけない気がするのですが。 全くわからない。 intval?? まずは、modifiedを日付に直すことを考えたほうがいいのでしょうか? 一様実施した手順を記載します。 まず初めに。 ⑴viewに値渡すため、$this->set(compact('num'));を追記しまいた。 ⑵値の確認。 <?php Debugger::dump($num);?> を追記。 下記の値が返ってくることを確認。 array( (int) 0 => array( 'Num' => array( 'id' => '1', 'modified' => null, 'sum' => '18' ) ), ⑶下記を追記 <?php foreach($num as $value) { echo $value['Num']['sum']; }?> カレンダーを含めた記述内容 ----------------------------------------------------------------------------- <?php // 現在の年月を取得 $year = date('Y'); $month = date('n'); // 月末日を取得 $last_day = date('j', mktime(0, 0, 0, $month + 1, 0, $year)); $calendar = array(); $j = 0; // 月末日までループ for ($i = 1; $i < $last_day + 1; $i++) { // 曜日を取得 $week = date('w', mktime(0, 0, 0, $month, $i, $year)); // 1日の場合 if ($i == 1) { // 1日目の曜日までをループ for ($s = 1; $s <= $week; $s++) { // 前半に空文字をセット $calendar[$j]['day'] = ''; $j++; } } // 配列に日付をセット $calendar[$j]['day'] = $i; $j++; // 月末日の場合 if ($i == $last_day) { // 月末日から残りをループ for ($e = 1; $e <= 6 - $week; $e++) { // 後半に空文字をセット $calendar[$j]['day'] = ''; $j++; } } } ?> <br> <table> <tr> <th>日</th> <th>月</th> <th>火</th> <th>水</th> <th>木</th> <th>金</th> <th>土</th> </tr> <tr> <?php $cnt = 0; ?> <?php foreach ($calendar as $key => $value): ?> <!--追加記述(カレンダーの日付に発生人数の表示)--> <td> <?php $cnt++; ?> <div class="date"> <?php echo $value['day']; ?><br> </div> <div class="num"> <?php foreach ($num as $value) { echo $value['Num']['sum']; } ?> </div> </td> <?php if ($cnt == 7): ?> </tr> <tr> <?php $cnt = 0; ?> <?php endif; ?> <?php endforeach; ?> </tr> </table> 長くなり申し訳ございません。
coba-coba

2016/01/19 03:42

そうですね、大体KawataniAtsushiさんの考えている通りです。 カレンダーを表示するために、for文で1日ずつループしていますよね。 理想は、そのループの中で得られる日付で、sumvalueを表示できることです。 そのためには、[日付1 => sumvalue1, 日付2 => sumvalue2, …]という連想配列があれば、for文で得られる日付をキーとして、sumvalueを取得できます。 ということで処理を見ていきたいのですが、ここではコードが見づらいため、一番上の回答に追記する形で、コントローラーで連想配列$modified_sumvalueをセットするまでを書きます。 ----------------------------- Viewに連想配列を渡した後は、Viewで $modified_sumvalue[日付] という形でsumvalueを取得できます。 なお、その日付はmodifiedの値です。MySQLにDate形式で入っている場合は、取得すると、例えば2016-01-01のようになります。(年月日をハイフンでつなぎ、月と日はゼロで埋めた二桁。) では、どうやってその日付を用意するか。 Viewでは、 年 → $year 月 → $manth 日 → $i としているので、 $year.'-'.str_pad($month, 2, 0, STR_PAD_LEFT).'-'.str_pad($i, 2, 0, STR_PAD_LEFT) とすると、2016-01-01のような形式にすることができます。 それで取得できる日付を、$modified_sumvalue[日付]に入れてあげれば、指定するmodifiedのsumvalueを取得することができます。 最後は、echo $modified_sumvalue[日付];などで表示してください。
coba-coba

2016/01/19 03:51

あと、$modified_sumvalue[日付]で指定した日付のsumvalueがあるか分からないので、存在チェックする必要があります。念のため。
atsupoooon

2016/01/19 04:42

なるほどです。 ご指摘ありがとうございます。 str_pad()関数で同じ形式にするのですね! 整数値に直すか、日付の2桁だけ取得して条件分岐? などいろいろ考えみたのですが、これといった解決策が見つからず。 やってみます!!! また、結果をご報告致します! 大変ありがとうございます。
atsupoooon

2016/01/19 14:26

すいません。 modifiedの値を2016-01-01の形式にすることができません。 str_pad()関数の関数の使い方を間違えているかと。。。 下記の使い方では、ダメなのはわかりました。 http://php.net/manual/ja/function.str-pad.php $yearやなどが入るとわかりません。
atsupoooon

2016/01/19 15:18

本当何度もすいません。 お聞きしたいのですが、modifiedの値を関数で処理するという、認識で間違いないでしょうか。 流れとしては、以下のように実施しました。 1.modifiedの値を表示、確認 2.modifiedの値を変数に代入 3.modifiedの値を関数で処理 3.がどうしてもうまくいきません。 あとは、色々自分なりに考えて書いてみたものの、エラー、ループが長くなったり、、、 そんな状態です。 流れは、合っていますでしょうか?
coba-coba

2016/01/20 00:37 編集

先にちょっと整理・確認しましょうか。 あと、下記に書きますが、modifiedの設定について教えてください。 日付で出てきたのは、次の2つですね。 1. データベースのmodifiedカラム 2. カレンダーのプログラム中に出てくる年月日($year, $month, $i) 1. については、modifiedの形式はどうなっていますか? 日付ということで、MySQLのDATEで設定しているかと思っていましたが、実際はどのような形式で保存していますか? 2. 日付で整形する必要があるのは、modifiedではなく、カレンダーのプログラム中に出てくる年月日($year, $month, $i)です。ただ、1.に書いたようにDATEで保存していなければ、話は変わってきますが。 ご存じかもしれませんが、CakePHPではカラム名をmodifiedとすると、レコードを修正した時に自動的にmodifiedの値が更新されるようになります。 通常DATETIMEまたはDATEと設定しますが、今回は日付のみを想定している(時間は考慮しない)ので、DATEとする必要があります。 もし、時間も考慮するためにDATETIMEとしているならば、それに合わせる必要があります。
atsupoooon

2016/01/20 02:55

ご回答ありがとうございます。 1. については、modifiedの形式はどうなっていますか? >>datetimeです。時間も入っています。 2. 日付で整形する必要があるのは、modifiedではなく、カレンダーのプログラム中に出てくる年月日($year, $month, $i)です。 >>datetimeなのでそもそも話が変わってしまいますよね?? >>日付の整形をするのは、カレンダー側をmodifiedに合わせるのですか。 私が情報を伝えきれずすいません。 時間も見ておきたいのでDATETIMEにしております。 DATETIMEの場合であれば、 ・modifiedの値の時間を無視(削除的な)する記述と ・カレンダーの時間をmodifiedと同じ形式に変えることが必要???? イメージですが、、、
coba-coba

2016/01/20 03:46

そうでしたか。modifiedはdatetimeですね。 上の一番最初の回答欄にあるコードを更新したので、そちらでいきましょう。 もっとスマートな方法があるかもしれませんが、コントローラーで単純に、datetime→dateの変換を行ってしまいました。 修正部分は、次の部分です。 // キーをmodified、値をsumvalueとした連想配列$modified_sumvalueを作成 $results_tmp = Hash::combine($tweet, '{n}.Tweet.modified', '{n}.Tweet.sumvalue'); // キーをDATETIMEからDATEに変換 $results = []; foreach ($results_tmp as $key => $value) { $results[date('Y-m-d', strtotime($key))] = $value; } これで、カレンダーの方の日付を前に書いたように $year.'-'.str_pad($month, 2, 0, STR_PAD_LEFT).'-'.str_pad($i, 2, 0, STR_PAD_LEFT) とすると、modifiedをdatetime→date変換したキーと同じ形式になります。 例:2016-01-20 どうでしょう。
atsupoooon

2016/01/20 12:24

コントローラー内の記述を以下のように記述しました。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー $this->Num->virtualFields['sum'] = 0; $data = $this->Num->find('all', array( 'fields'=> array('Num.id', 'Num.modified', 'sum(Num.value) as Num__sum'), 'group' => array('Num.modified') )); $results_tmp = Hash::combine($data, '{n}.Num.modified', '{n}.Num.sumvalue'); $this->set(compact('results_tmp')); ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー view側では下記になります。 $results = []; <?php foreach ($results_tmp as $key => $value){ $results[date('Y-m-d', strtotime($key))] = $value; Debugger::dump($results); array( '1970-01-01' => null, '2016-01-11' => null, '2016-01-14' => null, '2016-01-15' => null, '2016-01-16' => null, '2016-01-17' => null ) 何かおかしいところありますでしょうか? このnullで返ってきている部分がおかしいかと思います。 カレンダーの部分ですが日付を2016-01-20の形式で表示できるようになりましたが、 $value['day'] = $year.'-'.str_pad($month, 2, 0, STR_PAD_LEFT).'-'.str_pad($i, 2, 0, STR_PAD_LEFT); echo $value['day']; カレンダー内のループで表示させると、 すべての$value['day']が2016-01-32と表示されます。 だいぶ頭が混乱してきました。www 何度すいません。
coba-coba

2016/01/21 00:11 編集

だいぶいいところまで来ていますよ。 データの取得と表示をまとめて考えてしまったので、混乱しますよね。 KawataniAtsushiさんにお時間があれば、一つずつ絞って考えていきたいのですが。 大丈夫ですか? とりあえず、データの取得がうまくいっていないようですね。 データの取得だけ先に確実にしたいです。 【二つ下のコメント参照:(修正)virtualFieldsをsumvalueに統一】 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー $this->Num->virtualFields['sumvalue'] = 0; $data = $this->Num->find('all', array( 'fields'=> array('Num.id', 'Num.modified', 'sum(Num.value) as Num__sumvalue'), 'group' => array('Num.modified') )); $results_tmp = Hash::combine($data, '{n}.Num.modified', '{n}.Num.sumvalue'); $this->set(compact('results_tmp')); ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
coba-coba

2016/01/20 23:57

あと、そもそもですが、お互いに環境や考えていることが合っているか確認したいです。 [確認 1] 規約に沿って命名できているか ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー テーブル名:nums モデル:Num.php class Num extends AppModel { コントローラー:NumsController.php class NumsController extends AppController { ビュー:View/Nums/アクション名.ctp ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー [ numsテーブル ] id value (int) created modified (datetime) ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー [確認 2] やりたいことを確認したいです。下記の考え方で合っているか教えてください。 1. numsテーブルからmodifiedカラムの日付(年月日)でグルーピングし、そのグループ内でvalueカラムの値の合計を求める。 例: 3つレコードがあったとします。 id 1 value 1 modified 2016-01-11 01:00:00 id 2 value 10 modified 2016-01-11 05:00:00 id 3 value 100 modified 2016-01-30 03:00:00 これら3つのレコードから、次のデータを取得 2016-01-11 => 11 (1 + 10) 2016-01-30 => 100 (100) 2. カレンダーで、日付ごとに、上記1. の合計を表示 2016-01-11 11を表示 2016-01-30 100を表示 [教えてください 1] numsテーブルのレコードで、valueカラムの値を2,3個 例: value 100 value 15 value 333
coba-coba

2016/01/21 00:08

すみません、私が書いたコードにおかしいところがありました。 virtualFieldsをsumとsumvalueとごちゃごちゃにしていました。 自分の環境からコピペしたり修正したりして、書き間違えていたようです…。 全てsumvalueに統一したら、きちんとデータを取得できるのではないかと思います。 ごめんなさい。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー $this->Num->virtualFields['sumvalue'] = 0; $data = $this->Num->find('all', array( 'fields'=> array('Num.id', 'Num.modified', 'sum(Num.value) as Num__sumvalue'), 'group' => array('Num.modified') )); $results_tmp = Hash::combine($data, '{n}.Num.modified', '{n}.Num.sumvalue'); $this->set(compact('results_tmp')); ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
atsupoooon

2016/01/21 11:23

返信が遅くなりすいません。 めっちゃ時間かかりました。4時間ほど格闘してました。。笑 ちゃんとした値が取得できました!!! array( '2015-12-15' => '3', '2016-01-01' => '10', '2016-01-03' => '4' ) これ正しいですよね!!?? 日付も問題なく表示できました。 最後のループの中からデータを表示させるのが。。 $modified_sumvalue[日付]ではエラーになります。 view側 <?php $results = []; foreach ($results_tmp as $key => $value) { $results[date('Y-m-d', strtotime($key))] = $value; //Debugger::dump($results); } コントローラー側 this->Num->virtualFields['sumvalue'] = 0; $data = $this->Num->find('all', array( 'fields'=> array('Num.id', 'Num.modified', 'sum(Num.value) as Num__sumvalue'), 'group' => array('Num.modified') )); $results_tmp = Hash::combine($data, '{n}.Num.modified', '{n}.Num.sumvalue'); $this->set(compact('results_tmp')); 最後の最後までドツボにハマっております。。。 確認1・2ともに合っております。
coba-coba

2016/01/21 14:13

ついに!値取得できてそうですね!よかった! 4時間もお疲れさまです。 あと一息ですね! KawataniAtsushiさんのコードを見ると、$modified_sumvalue[日付]ではなく、$results[日付]ではないですか? 次のコードで、月初から月末までの、日付ごとの値を出力できるはずです。 $year = date('Y'); $month = date('n'); $last_day = date('j', mktime(0, 0, 0, $month + 1, 0, $year)); for ($i = 1; $i < $last_day + 1; $i++) { $the_day = $year.'-'.str_pad($month, 2, 0, STR_PAD_LEFT).'-'.str_pad($i, 2, 0, STR_PAD_LEFT); if (!empty($results[$the_day])) { echo $the_day.'の値は'.$results[$the_day].'です。<br>'; } else { echo $the_day.'の値はありません。<br>'; } }
atsupoooon

2016/01/21 16:43

これでいけました!!!!!! 大変長い間、ご指導、ご指摘ありがとうございました。 約5日間もお付き合いしていただき感謝致します。 授業をお支払いしたいくらいです!! 本当にありがとうございました。 最終的に下記の記述になりました。 //カレンダーのループ <?php foreach ($calendar as $key => $value): ?> <td> <?php $cnt++; ?> <div class="date"> <?php $timeday = $value['day']; $time=$year.'-'.str_pad($month, 2, 0, STR_PAD_LEFT).'-'.str_pad($timeday, 2, 0, STR_PAD_LEFT); echo $time; ?><br> </div> <div class="num"> //合計の表示 <?php $results = []; foreach ($results_tmp as $key => $value) { $results[date('Y-m-d', strtotime($key))] = $value; } if (!empty($results[$time])) { echo $time.'の値は'.$results[$time].'です。<br>'; } else { echo $time.'の値はありません。<br>'; } 結果的に、$results[日付]で取得できました。 いろいろとご指導ありがとうございます。 また、お聞きするかと思いますが その際はまたご指摘頂ければと思います。 ありがとうございました。
coba-coba

2016/01/21 23:05

おめでとうございます! 私は合間をぬってでしたが、KawataniAtsushiさんはずっと取り組んでいましたよね。 お疲れさまでした。 これから更にカレンダーアプリの改良でしょうか。 お力になれるか分かりませんが、何かあればおっしゃってください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問