Php 使用键对数组进行排序
我有一个数组,它承载我的框架的所有路由。看起来像这样Php 使用键对数组进行排序,php,arrays,Php,Arrays,我有一个数组,它承载我的框架的所有路由。看起来像这样 $routes=[ '/[:name]/[:name]/[:name]' =>['ALL','dynamic','blog'] '/news' =>['ALL','static','news'], '/about' =>['ALL','static'], ]; 我想根据 斜杠数/ 动态参数的数量 在钥匙里。我
$routes=[
'/[:name]/[:name]/[:name]' =>['ALL','dynamic','blog']
'/news' =>['ALL','static','news'],
'/about' =>['ALL','static'],
];
我想根据
斜杠数/
动态参数的数量
在钥匙里。我将如何完成它?这里有两件事很重要。您需要保留键到值的关系。这意味着您使用数组排序函数,如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文档了吗?你试过什么吗?我试过uksort和asort,但没有work@WEBDEVPR给我们看看。@WEBDEVPR。。就像你试图解决问题一样。