• ベストアンサー

PHPの得意な方へ、神様の知恵をお貸し下さい!!

PHPの得意な方へ、神様の知恵をお貸し下さい!! どうかこのお馬鹿に知恵をお願い致します。 配列をforeachでdatetimeを取得します。 その取得した内容を以下のようなイメージで作ることは可能でしょうか? その作り方を教えて下さい <?php foreach($db_date as $dates):?> 【11月】 1日 11:00 15:00 16:00 21:00 【10月】 31日 11:00 15:00 16:00 21:00 30日 11:00 15:00 16:00 21:00 <?php endforeach; ?>

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

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

元データはSQLでとっていますか? もしそうならソートはSQL側でやる方がよいかもしれないですね。 一応今回ご指示のデータをPHPでソートしてみました。 <?PHP $db_date=Array( 0=>Array("M"=>Array("id"=> 1,"created"=>"2010-10-30 11:00:00")) , 1=>Array("M"=>Array("id"=> 2,"created"=>"2010-10-30 15:00:00")) , 2=>Array("M"=>Array("id"=> 3,"created"=>"2010-10-30 16:00:00")) , 3=>Array("M"=>Array("id"=> 4,"created"=>"2010-10-30 21:00:00")) , 4=>Array("M"=>Array("id"=> 5,"created"=>"2010-10-31 11:00:00")) , 5=>Array("M"=>Array("id"=> 6,"created"=>"2010-10-31 15:00:00")) , 6=>Array("M"=>Array("id"=> 7,"created"=>"2010-10-31 16:00:00")) , 7=>Array("M"=>Array("id"=> 8,"created"=>"2010-10-31 21:00:00")) , 8=>Array("M"=>Array("id"=> 9,"created"=>"2010-11-01 11:00:00")) , 9=>Array("M"=>Array("id"=>10,"created"=>"2010-11-01 15:00:00")) ,10=>Array("M"=>Array("id"=>11,"created"=>"2010-11-01 16:00:00")) ,11=>Array("M"=>Array("id"=>12,"created"=>"2010-11-01 21:00:00")) ); usort($db_date,"sort_created"); $pre_date =""; $pre_month=""; foreach($db_date as $dates){ $d=strtotime($dates["M"]["created"]); $this_month=date("Y-m",$d); $this_date =date("Y-m-d",$d); if($pre_month!=$this_month){ if($pre_date!="") print "<br>\n"; print "【".date("n",$d)."月】"; } if($pre_date !=$this_date) print "<br>\n".date("j",$d)."日<br>\n"; print date("H:i",$d)."<br>\n"; $pre_date =$this_date; $pre_month=$this_month; } function sort_created($a, $b){ $date_a=strtotime($a["M"]["created"]); $date_b=strtotime($b["M"]["created"]); if(date("Y-m-d",$date_a)<date("Y-m-d",$date_b)) return 1; if(date("Y-m-d",$date_a)>date("Y-m-d",$date_b)) return -1; if(date("H-i-s",$date_a)<date("H-i-s",$date_b)) return -1; if(date("H-i-s",$date_a)>date("H-i-s",$date_b)) return 1; return 0; } ?>

future-boy
質問者

お礼

本当に神様っているんですね!!ゴットハンド!まさにあなたは神の手だ! ありがとうございます!!!!!!!!!!!!!!!!!

その他の回答 (1)

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

元データの形式はどうなっているの? print_r($db_date)で表示してみては? 表示はHTMLで表示したいの?

future-boy
質問者

補足

ご覧頂きありがとうございます。 > 元データの形式はどうなっているの? > print_r($db_date)で表示してみては? 元のデータといいますと、配列のデータでしょうか? 例えばこういう事です。 Array ( [0] => Array ( [M] => Array ( [id] => 1 [created] => 2010-10-30 11:00:00 ) ) [1] => Array ( [M] => Array ( [id] => 2 [created] => 2010-10-30 15:00:00 ) ) [2] => Array ( [M] => Array ( [id] => 3 [created] => 2010-10-30 16:00:00 ) ) [3] => Array ( [M] => Array ( [id] => 4 [created] => 2010-10-30 21:00:00 ) ) [4] => Array ( [M] => Array ( [id] => 5 [created] => 2010-10-31 11:00:00 ) ) [5] => Array ( [M] => Array ( [id] => 6 [created] => 2010-10-31 15:00:00 ) ) [6] => Array ( [M] => Array ( [id] => 7 [created] => 2010-10-31 16:00:00 ) ) ・・・・続く [11] => Array ( [M] => Array ( [id] => 12 [created] => 2010-11-01 21:00:00 ) ) ) ブラウザに表示したいです。 以上で大丈夫でしょうか? 宜しくお願い致します。

関連するQ&A