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

那应该做你想做的事。

更新:将 ksort 更改为 krsort 以获得 OP 想要的下降年份。

于 2012-09-22T02:23:37.417 回答