0

配列がありますが、順番に並べ替える必要があります。これを行う簡単な方法はありますか?配列は次のようになります。

( [01/2012] => 0 [01/2013] => 4 [02/2011] => 0 [02/2012] => 0
[03/2011] => 0 [03/2012] => 0 [04/2011] => 0 [04/2012] => 0
[05/2011] => 0 [05/2012] => 0 [06/2011] => 0 [06/2012] => 0
[07/2011] => 0 [07/2012] => 0 [08/2011] => 0 [08/2012] => 1
[09/2011] => 0 [09/2012] => 5 [10/2011] => 0 [10/2012] => 3
[11/2011] => 0 [11/2012] => 7 [12/2011] => 0 [12/2012] => 2 ) 

最も遠いものから最新のものに移動する必要があります。

4

2 に答える 2

2

uksort関数を使用します。

uksort ( $myArray , function($keyA, $keyB){
    $monthYearA = explode('/', $keyA);
    $monthYearB = explode('/', $keyB);
    return $monthYearA[1].$monthYearA[0] >
           $monthYearB[1].$monthYearB[0] ? 1 : -1;
});
于 2013-02-07T22:00:20.100 に答える
-1

各キーを unix タイムスタンプに変換し、キーをソート (ksort) してから、再度月と年にすることで解決しました。

      while($row = mysql_fetch_array($conversions_query)){
    if($row['data']){
      $data = unserialize($row['data']);
      foreach($data as $month=>$visits){
        if($visits == ""){
          $visits = 0;
        }
        $monthstring = explode("/", $month);
        $output[strtotime($monthstring[0]."/01/".$monthstring[1])] = $visits;
      }
    }
  }

  ksort($output);

  foreach($output as $key => $val){
    $thisdate = date("m/y", $key)."<br>";
    $output[$thisdate] = $output[$key];
    unset($output[$key]);
  }

  echo "<br>SORTED OUTPUT: ";
  print_r($output);
于 2013-02-07T22:36:28.773 に答える