本文介绍了如何通过关键多维数组的各个层面进行排序?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我发现这个code进行排序:

  usort($阵列功能($ A,$ B){
    返回$ a ['order_inside_level'] - $ B ['order_inside_level'];
});

这是很好的一个级别。我有这样的事情:

 阵列(
 阵列(
     '级别'=>'AAA',
     为了'='1',
     '潜艇'=>阵列(
         阵列(
             '级别'=>'BBB',
             为了'='1',
             '潜艇'=>阵列(
                 阵列(
                     '级别'=>'CCC',
                     为了'='1',
                     '潜艇'=>阵列(
                         阵列(
                             '级别'=>DDD,
                             为了'='1',
                             '潜艇'=>阵列(
                                 ...
                             )
                         )
                     )
                 )
                 ,
                 阵列(
                     '级别'=>'CCC',
                     为了'='2',
                     '潜艇'=>阵列(                     )
                 )
             )
         阵列(
             '级别'=>'BBB',
             为了'='2'
         )
         阵列(
             '级别'=>'BBB',
             为了'='3'
         )
         )
     )
 )
 阵列(
     '级别'=>'AAA',
     为了'='2',
     '潜艇'=>阵列(     )
 ) )

阵列可具有任何深度和任何数目在每个级别中的元素。我需要使用上述code。通过按键秩序进行排序深度(AAA,BBB,CCC,等)的各个层面。


解决方案

 函数recursive_sort(安培; $ ARR){
            FS($ ARR);
        的foreach($改编为$ K =>&安培; $ V){
            如果(使用isset($ V ['潜艇'])){
                 recursive_sort($ V ['潜艇']);
             }
        }
}
功能sortByOrder($ A,$ B){
    返回$ a ['order_inside_level'] - $ B ['order_inside_level'];
}功能FS(放大器; $阵列){    usort($阵列,'sortByOrder');}

多次尝试后,我有这个。有用。键(潜艇)的名称是很难codeD究竟是不是那么好,但是......我很高兴它的工作原理。

I found this code for sorting:

usort($array, function($a, $b) {
    return $a['order_inside_level'] - $b['order_inside_level'];
});

It's good for one level. I have something like that:

array(
 array(
     'level'=>'aaa',
     'order'='1',
     'subs'=>array(
         array(
             'level'=>'bbb',
             'order'='1',
             'subs'=>array(
                 array(
                     'level'=>'ccc',
                     'order'='1',
                     'subs'=>array(
                         array(
                             'level'=>'ddd',
                             'order'='1',
                             'subs'=>array(
                                 ...
                             )
                         )
                     )
                 )
                 ,
                 array(
                     'level'=>'ccc',
                     'order'='2',
                     'subs'=>array(

                     )
                 )
             ),
         array(
             'level'=>'bbb',
             'order'='2'
         ),
         array(
             'level'=>'bbb',
             'order'='3'
         )
         )
     )
 ),
 array(
     'level'=>'aaa',
     'order'='2',
     'subs'=>array(

     )
 )

 )

Array may have any depth and any number of elements in each level. I need to sort each level of depth (aaa,bbb,ccc, etc) using the code above by key 'order'.

解决方案
function recursive_sort(&$arr) {
            fs($arr);
        foreach($arr as $k=> &$v){
            if (isset($v['subs'])) {
                 recursive_sort($v['subs']);
             }
        }
}


function sortByOrder($a, $b) {
    return $a['order_inside_level'] - $b['order_inside_level'];
}

function fs(&$array){

    usort($array, 'sortByOrder');

}

After multiple tries I have this. It works. Name of key (subs) is hardcoded what is not so good, but... I am glad it works.

这篇关于如何通过关键多维数组的各个层面进行排序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

11-03 13:24