這裏有兩件事很重要。你需要保持價值關係的關鍵。這意味着你使用數組排序函數,如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