2012-03-24 42 views
3

我有使用PHP的数组的输出如下。我需要做两件事...首先,我需要对数组进行排序,以便按照最近的日期进行打印。我不能使用简单的排序方式,因为日期的输出格式为mm/dd/yyyy(而不是常规时间戳)...排序多维数组(PHP) - 日期并发症和计数

然后我需要计算每年有多少行。 因此,在下面的例子中,我需要知道,有...从2010年

  • 2项从2011
  • 1项
  • 2项从2012
  • 停止计数时,有没有更多的行

自今年不是从日期数字的其余部分分离,这也是复杂的事情......

Array 
(
    [0] => Array 
     (
      [racer_date] => 11/15/2010 
      [racer_race] => Test Row 4 
      [racer_event] => 321 
      [racer_time] => 16 
      [racer_place] => 12 
      [racer_medal] => 1 
     ) 

    [1] => Array 
     (
      [racer_date] => 7/15/2010 
      [racer_race] => Test Row 3 
      [racer_event] => 123 
      [racer_time] => 14 
      [racer_place] => 6 
      [racer_medal] => 0 
     ) 

    [2] => Array 
     (
      [racer_date] => 7/28/2011 
      [racer_race] => Test Row 
      [racer_event] => 123 
      [racer_time] => 10 
      [racer_place] => 2 
      [racer_medal] => 2 
     ) 

    [3] => Array 
     (
      [racer_date] => 10/9/2011 
      [racer_race] => Test Row 2 
      [racer_event] => 321 
      [racer_time] => 12 
      [racer_place] => 3 
      [racer_medal] => 3 
     ) 

    [4] => Array 
     (
      [racer_date] => 10/3/2012 
      [racer_race] => World Indoor Championships (final) 
      [racer_event] => 400m 
      [racer_time] => 50.79 
      [racer_place] => 1 
      [racer_medal] => 1 
     ) 

) 

回答

2
function cmp($a, $b) 
{ 
    if (strtotime($a["racer_date"]) == strtotime($b["racer_date"])) { 
     return 0; 
    } 
    return (strtotime($a["racer_date"]) < strtotime($b["racer_date"])) ? -1 : 1; 
} 

usort($array, "cmp"); 

打电话给你的数组$阵列,和上面的代码将对其进行排序.. 并计算你需要运行的foreach并在这的foreach,这将给你今年4位数的检查date('Y',strtotime($a["racer_date"]))实体..