首页 > 语言 > 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. $array=array
  43.   array('name'=>'Tom','age'=>'23','like'=>'beer'), 
  44.   array('name'=>'Trump','age'=>'50','like'=>'Food'), 
  45.   array('name'=>'Jack','age'=>'26','like'=>'Travel'
  46. ); 
  47. print_r(array_sort($array,'age')); 
  48. ?> 

运行结果:

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

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