首页 > 语言 > PHP > 正文

PHP实现二维数组按指定的键名排序的方法示例

2024-09-04 11:47:03
字体:大 中 小
来源:转载
供稿:网友
  1. <?php 
  2. /*二维数组按指定的键值排序*/ 
  3. functionarray_sort($array,$keys,$type='asc'){ 
  4.   if(!isset($array) || !is_array($array) ||emptyempty($array)){ 
  5.     return''; 
  6.   } 
  7.   //排序字段名,如:id 
  8.   if(!isset($keys) || trim($keys)==''){ 
  9.     return''; 
  10.   } 
  11.   //排序方式,如:desc、asc 
  12.   if(!isset($type) ||$type==''|| !in_array(strtolower($type),array('asc','desc'))){ 
  13.     return''; 
  14.   } 
  15.   //定义一个数组 
  16.   $keysvalue=array(); 
  17.   foreach($arrayas$key=>$val){ 
  18.     //对排序字段值进行过滤 
  19.     $val[$keys] =str_replace('-','',$val[$keys]); 
  20.     $val[$keys] =str_replace(' ','',$val[$keys]); 
  21.     $val[$keys] =str_replace(':','',$val[$keys]); 
  22.     //将记录中指定的键名放入数组中,如:[0]=>5,[1]=>3,[2]=>6 
  23.     $keysvalue[] =$val[$keys];//排序字段,如:id     索引=》排序键名 
  24.   } 
  25.   asort($keysvalue);//按值升序排序,且保持键名与键值之间的索引关系,如:[1]=>3,[0]=>5,[2]=>6 
  26.   reset($keysvalue);//指针重新指向数组第一个 
  27.   foreach($keysvalueas$key=>$vals) { 
  28.     $keysort[] =$key;//0=>[1],1=>[0],2=>[2] 
  29.   } 
  30.   $keysvalue=array(); 
  31.   $count=count($keysort);//排序记录数 
  32.   if(strtolower($type) !='asc'){//降序 
  33.     for($i=$count-1;$i>=0;$i--) { 
  34.       $keysvalue[] =$array[$keysort[$i]]; 
  35.     } 
  36.   }else{//升序 
  37.     for($i=0;$i<$count;$i++){ 
  38.       $keysvalue[] =$array[$keysort[$i]]; 
  39.     } 
  40.   } 
  41.   return$keysvalue; 
  42. } 
  43. $array=array( 
  44.   array('name'=>'Tom','age'=>'23','like'=>'beer'), 
  45.   array('name'=>'Trump','age'=>'50','like'=>'Food'), 
  46.   array('name'=>'Jack','age'=>'26','like'=>'Travel') 
  47. ); 
  48. print_r(array_sort($array,'age')); 
  49. ?> 

运行结果:

  1. Array 
  2. ( 
  3.   [0] => Array 
  4.     ( 
  5.       [name] => Tom 
  6.       [age] => 23 
  7.       [like] => beer 
  8.     ) 
  9.   [1] => Array 
  10.     ( 
  11.       [name] => Jack 
  12.       [age] => 26 
  13.       [like] => Travel 
  14.     ) 
  15.   [2] => Array 
  16.     ( 
  17.       [name] => Trump 
  18.       [age] => 50 
  19.       [like] => Food 
  20.     ) 
  21. ) 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表