2

そのような配列があるとしましょう

array(2) {
  [2012]=>
  array(2) {
    [0]=>
    array(2) {
      ["file"]=>
      string(3) "aaa"
      ["mtime"]=>
      int(1347534106)
    }
    [1]=>
    array(2) {
      ["file"]=>
      string(3) "bbb"
      ["mtime"]=>
      int(1346293592)
    }
  }
  [2011]=>
  array(2) {
    [0]=>
    array(2) {
      ["file"]=>
      string(3) "ccc"
      ["mtime"]=>
      int(1316753224)
    }
    [1]=>
    array(2) {
      ["file"]=>
      string(3) "ddd"
      ["mtime"]=>
      int(1318671936)
    }
  }
}

この配列を最初のインデックス (2012,2011[,2010,…]) で降順に並べ替え、すべてのサブ配列 (ルート配列のすべての値) を mtime 値で降順に並べ替えたいのですが、array_multisort() を適用する方法がわかりません。これ。最初のキーを '2012' として渡すことができ、それを連想配列のキーとして渡すことができますが、mtime で並べ替えるにはどうすればよいでしょうか?

4

1 に答える 1

0

トップレベルの配列が$arrayであるとすると、次のようにすることができます。

krsort($array);
foreach ($array as &$arr) {
    uasort($arr, 'cmp');
}

function cmp($a, $b) {
    return $b['mtime'] - $a['mtime'];
}

var_dump($array); //to check results

それはあなたが望むことをするはずです。

更新: OP が望んでいたように、子孫の年を取得するために ksort を krsort に変更しました。

于 2012-09-22T02:23:37.417 に答える