我有一棵这样的树
array(
array('name'=>'n1', 'timestamp'=>1000, 'children'=> array()),
array('name'=>'n2', 'timestamp'=>2000, 'children'=> array(
array('name'=>'n3', 'timestamp'=>3000, 'children'=> array()),
array('name'=>'n4', 'timestamp'=>4000, 'children'=> array(
array('name'=>'n5', 'timestamp'=>4000, 'children'=> array()),
array('name'=>'n6', 'timestamp'=>3000, 'children'=> array())
)),
)),
array('name'=>'n7', 'timestamp'=>3000, 'children'=> array())
)
-n1
-n2
-n3
-n4
-n5
-n6
-n7
我希望按每个级别DESC的时间戳对其进行排序,因此结果将是
-n7
-n2
-n4
-n5
-n6
-n3
-n1
答案 0 :(得分:1)
function timestamp_sort(&$a, &$b)
{
if (!empty($a['children']))
usort($a['children'], 'timestamp_sort');
if ($a['timestamp'] == $b['timestamp'])
return 0;
return $a['timestamp'] < $b['timestamp'] ? 1 : -1;
}
usort($tree, 'timestamp_sort');
我假设你熟悉usort
函数 - 如果没有,你应该阅读documentation。
除usort
的基本用法外,我们还要做两件事:
timestamp_sort
函数会调用自身。