帝国CMS模板大全
www.admin99.cn
www.92cms.cn 帝国CMS模板下载站!,情怀,养站,二次开发!源码需求比较大的一站式会员下载,价更省!!!

PHP二维数组排序问题详解(数组键值排序) - php数组

PHP二维数组排序问题详解(数组键值排序)

根据某个键值对二维数组进行排序是个常见问题,这里总结一个函数,可同时对两个键值分别排序,当然想要更多的话就自行解决吧.

但是如果需要排序的数组是一个二维数组,需要按照数组的键值排序,如下面这个二维数组,需要按照sort键名来排序,那么array_multisort() 就无法直接实现了.

实例一,代码如下:

$arr  =  array ( 
array ( 
'sort'  => 3, 
'a'  =>  'a' , 
'b'  =>  'b'  
), 
array ( 
'sort'  => 5, 
'a'  =>  'a' , 
'b'  =>  'b'  
), 
array ( 
'sort'  => 1, 
'a'  =>  'a' , 
'b'  =>  'b'  

); 

这样array_multisort()不不能生效了,我们可以对函数进行升级一下,根据指定键值进行排序,代码如下:

function  array_sort( $arr , $key1 , $sort1 = 'asc' , $key2 = '' , $sort2 = 'asc' ){ 
     if  (! is_array ( $arr )){ 
         return   $arr ; 
    } 
     foreach ( $arr  AS  $key  =>  $row ){ 
         $temp [ $key ] =  $row [ $key1 ]; 
    } 
     $sort1  =  $sort1  ==  'asc'  ? SORT_ASC : SORT_DESC; 
     if (! $key2 ){ 
         array_multisort ( $temp ,  $sort1 , $arr ); 
    }  else  { 
         foreach ( $arr  AS  $key  =>  $row ){ 
             $temp2 [ $key ] =  $row [ $key2 ]; 
        } 
         $sort2  =  $sort2  ==  'asc'  ? SORT_ASC : SORT_DESC; 
         array_multisort ( $temp ,  $sort1 , $temp2 , $sort2 , $arr ); 
    } 
     return   $arr ; 

实例二,代码如下:

function  array_sort( $arr , $keys , $type = 'asc' ){  
  $keysvalue  =  $new_array  =  array (); 
  foreach  ( $arr   as   $k => $v ){ 
   $keysvalue [ $k ] =  $v [ $keys ]; 
 } 
  if ( $type  ==  'asc' ){ 
  asort( $keysvalue ); 
 } else { 
  arsort( $keysvalue ); 
 } 
 reset( $keysvalue ); 
  foreach  ( $keysvalue   as   $k => $v ){ 
   $new_array [ $k ] =  $arr [ $k ]; 
 } 
  return   $new_array ;  

$array  =  array ( 
  array ( 'name' => '手机' , 'brand' => '诺基亚' , 'price' =>1050), 
  array ( 'name' => '笔记本电脑' , 'brand' => 'lenovo' , 'price' =>4300), 
  array ( 'name' => '剃须刀' , 'brand' => '飞利浦' , 'price' =>3100), 
  array ( 'name' => '跑步机' , 'brand' => '三和松石' , 'price' =>4900), 
  array ( 'name' => '手表' , 'brand' => '卡西欧' , 'price' =>960), 
  array ( 'name' => '液晶电视' , 'brand' => '索尼' , 'price' =>6299), 
  array ( 'name' => '激光打印机' , 'brand' => '惠普' , 'price' =>1200) 
); 
 
$ShoppingList  = array_sort( $array , 'price' ); 
print_r( $ShoppingList ); 

面是对$array这个二维数组按照'price'从低到高的排序.

赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《PHP二维数组排序问题详解(数组键值排序) - php数组》
文章链接:https://www.admin99.cn/6708
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
QQ站长交流群:953950264

登录

找回密码

注册