元データは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;
}
?>
お礼
本当に神様っているんですね!!ゴットハンド!まさにあなたは神の手だ! ありがとうございます!!!!!!!!!!!!!!!!!