首先定义这两个函数:
function specific_sort($a, $b) {
$r = more_specific($a, $b, 'controller');
if ($r == 0) {
$r = more_specific($a, $b, 'action');
if ($r == 0) {
$r = more_specific($a, $b, 'method');
}
}
return $r;
}
function more_specific($a, $b, $key) {
if (empty($a[$key])) {
return 1;
}
if (empty($b[$key])) {
return -1;
}
return 0;
}
然后:
$rt = array(
array( "controller" => "somewhere", "action" => "", "namespace" => "admin", "method" => "GET" ),
array( "controller" => "somewhere", "action" => "index", "namespace" => "admin", "method" => "" ),
array( "controller" => "somewhere", "action" => "index", "namespace" => "admin", "method" => "GET" )
);
usort($rt, 'specific_sort');
print '<pre>';
print_r($rt);
print '</pre>';
它应该打印出来:
Array
(
[0] => Array
(
[controller] => somewhere
[action] => index
[namespace] => admin
[method] => GET
)
[1] => Array
(
[controller] => somewhere
[action] => index
[namespace] => admin
[method] =>
)
[2] => Array
(
[controller] => somewhere
[action] =>
[namespace] => admin
[method] => GET
)
)