这里有两件事很重要。你需要保持价值关系的关键。这意味着你使用数组排序函数,如uasort()而不是usort()。接下来的事情是,你必须使用用户定义的排序功能,它表示你的排序算法。它描述了你想如何排列你的路线。
也可以按键排序:然后array_flip()是你的朋友。
您可以使用此启动:
<?php
$routes=[
'/about' =>['ALL','static'],
'/[:name]/[:name]/[:name]' =>['ALL','dynamic','blog'],
'/news' =>['ALL','static','news'],
];
function sortShortestRoute($a, $b)
{
return (count($a) < count($b)) ? -1 : 1;
}
function sortStaticBeforeDynamic($a, $b)
{
if($a[1] === 'static' && $b[1] === 'static') {
return 1;
}
if($a[1] === 'dynamic' && $b[1] === 'dynamic') {
return -1;
}
if ($a[1] === $b[1]) {
return 0;
}
}
// first sort
uasort($routes, 'sortStaticBeforeDynamic');
var_dump($routes);
// second sort
uasort($routes, 'sortShortestRoute');
var_dump($routes);
你看着在PHP文件如何多维数组排序? – 2014-10-05 09:11:42
你尝试过什么吗? – idmean 2014-10-05 09:15:08
我试过uksort()和asort(),但没有工作 – 2014-10-05 09:16:22