好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php 二维数组排序实现程序 - php数组

php 二维数组排序实现程序

在php中对二维数组排序我们可以直接使用array_multisort()函数即可实现,同时我也收藏了一些自定对二维数组排序代码大家可参考.

先来看array_multisort()函数,代码如下:

<?php  $ar  =  array (          array ( "10" , 11, 100, 100,  "a" ),          array ( 1, 2,  "2" , 3, 1)       );  array_multisort ( $ar [0], SORT_ASC, SORT_STRING,                  $ar [1], SORT_NUMERIC, SORT_DESC);  var_dump( $ar );  ?> 

本例中在排序后,第一个数组将变成 "10",100,100,11,"a"(被当作字符串以升序排列),第二个数组将包含 1, 3, "2", 2, 1(被当作数字以降序排列),代码如下:

array (2) {  [0]=>  array (5) {      [0]=> string(2)  "10"       [1]=> int(100)      [2]=> int(100)      [3]=> int(11)      [4]=> string(1)  "a"   }  [1]=>  array (5) {      [0]=> int(1)      [1]=> int(3)      [2]=> string(1)  "2"       [3]=> int(2)      [4]=> int(1)  }  } 

上面的用现成的函数感觉不是很方便,下面我来推荐一个用户自定义的函数,代码如下:

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 ); 

冒泡法,代码如下:

function  arraysort( $data ,  $order  =  'asc' ) {  //asc升序 desc降序   $temp  =  array  ();  $count  =  count  (  $data  );  if  ( $count  <= 0)  return  false;  //传入的数据不正确   if  ( $order  ==  'asc' ) {  for ( $i  = 0;  $i  <  $count ;  $i  ++) {  for ( $j  =  $count  - 1;  $j  >  $i ;  $j  --) {  if  ( $data  [ $j ] <  $data  [ $j  - 1]) {  //交换两个数据的位置   $temp  =  $data  [ $j ];  $data  [ $j ] =  $data  [ $j  - 1];  $data  [ $j  - 1] =  $temp ;  }  }  }  }  else  {  for ( $i  = 0;  $i  <  $count ;  $i  ++) {  for ( $j  =  $count  - 1;  $j  >  $i ;  $j  --) {  if  ( $data  [ $j ] >  $data  [ $j  - 1]) {  $temp  =  $data  [ $j ];  $data  [ $j ] =  $data  [ $j  - 1];  $data  [ $j  - 1] =  $temp ;  }  }  }  }    return   $data ;  }    $data  =  array  (7, 5, 3, 8, 9, 1, 5, 3, 1, 24, 3, 87, 0, 33, 1, 12, 34, 54, 66, 32 );  var_dump ( arraysort (  $data  ) );  //升序   echo  ( '<br>' );  var_dump ( arraysort (  $data  , 'desc' ) ); //降序  

查看更多关于php 二维数组排序实现程序 - php数组的详细内容...

  阅读:45次