Php 使用对象元素中数组属性的计数对数组进行排序

Php 使用对象元素中数组属性的计数对数组进行排序,php,arrays,sorting,routes,Php,Arrays,Sorting,Routes,我有一个objects$routes数组,它保存了我项目的所有Fs\u Controller\u Router\u Route对象 每个Fs_控制器路由器路由对象都有一个控制器、操作、参数(数组)、名称和别名属性 可以使用get方法(getAction、getController、getParams、getName和getAlias)访问每个属性 正如您在以下数组中看到的,params属性是一个数组,包含当前路由的参数 array (size=6) 'home' =>

我有一个objects$routes数组,它保存了我项目的所有Fs\u Controller\u Router\u Route对象

每个Fs_控制器路由器路由对象都有一个
控制器
操作
参数
(数组)、
名称
别名
属性

可以使用get方法(getAction、getController、getParams、getName和getAlias)访问每个属性

正如您在以下数组中看到的,params属性是一个数组,包含当前路由的参数

  array (size=6)
      'home' => 
        object(Fs_Controller_Router_Route)[3]
          private '_controller' => string 'index' (length=5)
          private '_action' => string 'index' (length=5)
          private '_params' => 
            array (size=2)
              ':name' => string 'Michael' (length=7)
              ':family_name' => string 'Corleone' (length=4)
          private '_name' => string 'home' (length=4)
          private '_alias' => string '/:name/:family_name' (length=19)
      'login' => 
        object(Fs_Controller_Router_Route)[4]
          private '_controller' => string 'index' (length=5)
          private '_action' => string 'login' (length=5)
          private '_params' => 
            array (size=0)
              empty
          private '_name' => string 'login' (length=5)
          private '_alias' => string '/login' (length=6)
      'signup' => 
        object(Fs_Controller_Router_Route)[5]
          private '_controller' => string 'index' (length=5)
          private '_action' => string 'signup' (length=6)
          private '_params' => 
            array (size=2)
              ':serial' => string 'dh3kddooo' (length=9)
              ':token' => string '304888030' (length=9)
          private '_name' => string 'signup' (length=6)
          private '_alias' => string '/signup/:token/:serial' (length=22)
      'about' => 
        object(Fs_Controller_Router_Route)[7]
          private '_controller' => string 'index' (length=5)
          private '_action' => string 'index' (length=5)
          private '_params' => 
            array (size=2)
              ':serial' => string 'dh3kddooo' (length=9)
              ':token' => string '304888030' (length=9)
          private '_name' => string 'about' (length=5)
          private '_alias' => string '/about/:serial/:token' (length=6)
我想做的是,使用每个对象的参数数量,对对象进行升序排序

我没有用这个代码做到这一点。。我只是不知道如何将count params部分添加到array_multisort函数中

array_multisort(array_map('count', $routes), SORT_ASC, $routes);

感谢Andresch Serj的评论。。我找到了解决办法,而且很有效

usort($routes, function($a,$b){

            if(count($b->getParams()) > count($a->getParams())){
                return 1;
            }else{
                return 0;
            }

        });

谢谢

您是否考虑过使用
usort
并编写一个简单的比较函数?我试过使用array_multisort(因为我已经习惯了这样做),但我没有想到usort,非常感谢。。。我没想过+1.