技术饭

PHP数组根据数组内的某个单元字段排序

copylian    0 评论    9970 浏览    2017.09.18

PHP数组根据数组内的某个单元字段排序,一个二维数组$array中需要按照sort接着是其他数组,如果两个或多个值相同,它将对下一个数组进行排序。从大到小的顺序,重新排列数组的顺序。那么这时候可以使用数组批量排序函数array_multisort()来帮助排序,array_multisort() 函数返回排序数组。您可以输入一个或多个数组。函数先对第一个数组进行排序。

如题,给出一个PHP数组,数组结构如下:

$arr = array(

                   array(

                           'name'=>'a',

                           'sort'=>1

                   ),

                  array(

                          'name'=>'b',

                          'sort'=>8

                  ),

                 array(

                        'name'=>'c',

                        'sort'=>2

                 ),

                array(

                        'name'=>'d',

                        'sort'=>11

                )

);


需要是需要按照norder从大到小的顺序,重新排列$arr数组的顺序。

可以使用array_multisort函数来帮助排序:

function p($arr){

            echo "<pre>";

            print_r($arr);

            echo "</pre>";

}


$arr = array(

                  array(

                          'name'=>'sadas',

                          'norder'=>1

                  ),

                  array(

                         'name'=>'sadas',

                         'norder'=>11

                 ),

                array(

                        'name'=>'sadas',

                        'norder'=>123

                ),

                array(

                       'name'=>'sadas',

                       'norder'=>11

                )

);


$flag = array();


foreach($arr as $v){

           $flag[] = $v['norder'];

}

array_multisort($flag, SORT_DESC, $arr);

p($arr);

--------- 或者 --------- 

//先用array_column 多维数组按照纵向(列)取出

$date = array_column($arr, 'run_date');

//上面得到的结果:array(0=>'2017-11-21',1=>'2017-11-20',3=>'2017-11-22')

//再用array_multisort  结合array_column得到的结果对$arr进行排序

array_multisort($date,SORT_ASC,$arr);

//最终的结果:

$arr=array(

                0=>array(

                    'run_date'=>'2017-11-20',

                    'count'=>'5'

                ),

                1=>array(

                    'run_date'=>'2017-11-21',

                    'count'=>'10'

                ),

                2=>array(

                    'run_date'=>'2017-11-22',

                    'count'=>'10'

                )

 );


只袄早~~~
感谢你的支持,我会继续努力!
扫码打赏,感谢您的支持!

文明上网理性发言!

  • 还没有评论,沙发等你来抢