php 二维数组按指定的键值排序

具体实例

 代码如下 复制代码

/*二维数组按指定的键值排序*/
function array_sort($array,$keys,$type='asc'){
 if(!isset($array) || !is_array($array) || empty($array)){
  return '';
 }
 if(!isset($keys) || trim($keys)==''){
  return '';
 }
 if(!isset($type) || $type=='' || !in_array(strtolower($type),array('asc','desc'))){
  return '';
 }
 $keysvalue=array();
 foreach($array as $key=>$val){
  $val[$keys] = str_replace('-','',$val[$keys]);
  $val[$keys] = str_replace(' ','',$val[$keys]);
  $val[$keys] = str_replace(':','',$val[$keys]);
  $keysvalue[] =$val[$keys];
 }
 asort($keysvalue); //key值排序
 reset($keysvalue); //指针重新指向数组第一个
 foreach($keysvalue as $key=>$vals) {
  $keysort[] = $key;
 }
 $keysvalue = array();
 $count=count($keysort);
 if(strtolower($type) != 'asc'){
  for($i=$count-1; $i>=0; $i--) {
   $keysvalue[] = $array[$keysort[$i]];
  }
 }else{
  for($i=0; $i<$count; $i++){
   $keysvalue[] = $array[$keysort[$i]];
  }
 }
 return $keysvalue;
}

使用方法:

比如:

 代码如下 复制代码
$a=array(
1=>array(
id=>1,
price=>'79',
),
2=>array(
id=>1,
price=>'68',
),
);

就使用:

 代码如下 复制代码

array_sort($a,'price');

php数组排序函数

sort  (  &$arr   [,fruits] )  对数组进行从低到高排序 ,并赋予新的键名 返回bool 111cn.net
rsort  ( &$arr   [,fruits] ) 对数组进行逆向排序  并赋予新的键名
asort ( &$arr   [,fruits] ) 对数组进行排序 ,并保持索引不变
arsort( &$arr   [,fruits] ) 对数组进行逆向排序 并保持索引不变

ksort ( &$arr [,fruits] ) 对数组按照键名进行排序
krsort( &$arr [,fruits] ) 对组数按照键名进行逆向排序

natsort( &$arr )     对数组键值进行‘自然排序法’ 按照长度 字母排序等
natcasesort( &$arr ) 对数组进行不区分大小写的 ‘自然排名’

usort ( &$arr , cmp_function ) 用户自定义函数对一个数组进行排序 重新排列键名
uksort (&$arr , cmp_function ) 用户自定义函数对一个数组进行键名排序
uasort (&$arr , cmp_function) 用户自定义函数对数组进行排序 并保持索引不变

array_multisort( $arr , mixed)
    第二个参数是 可以根据值改变排序行为
    SORT_REGULAR 正常比较单元  SORT_NUMERIC www.111cn.net 单元被作为数字来比较
    SORT_STRING 单元被作为字符串来比较 SROT_LOCALE_STRING 根据当前的local 设置来把单元当做字符串比较

时间: 2024-08-05 06:44:54

php 二维数组按指定的键值排序的相关文章

php自定义函数实现二维数组按指定key排序的方法_php技巧

本文实例讲述了php自定义函数实现二维数组按指定key排序的方法.分享给大家供大家参考,具体如下: 二维数组官方的排序方法并不好,该函数可以进行指定key的排序,已经测试并使用,代码如下: /*二维数组按指定的键值排序*/ function array_sort($arr, $keys, $type = 'desc') { $keysvalue = $new_array = array(); foreach ($arr as $k => $v) { $keysvalue[$k] = $v[$ke

php对二维数组按指定键值key排序示例代码_php技巧

复制代码 代码如下: function array_sort($array, $key){ if(is_array($array)){ $key_array = null; $new_array = null; for( $i = 0; $i < count( $array ); $i++ ){ $key_array[$array[$i][$key]] = $i; } ksort($key_array); $j = 0; foreach($key_array as $k => $v){ $ne

PHP将MYSQL内容读到二维数组并按指定列输出

PHP将MYSQL内容读到二维数组并按指定列输出 <? $host = "localhost";   //主机名 $user = "root";        //mysql用户名 $password = "";    //mysql密码 $database = "doc";  //mysql数据库名 $tables = "mclass";  //表名 $conn=mysql_connect(&quo

二维数组问题-二维数组给子函数传递值的问题

问题描述 二维数组给子函数传递值的问题 给子函数传递一个二维数组时,在子函数定义那int Sum(int arr[ ][3])是正确的,而int Sum(int arr[3][ ])错误,这是为什么? 解决方案 一个二维数组的行数(由二维数组的第一个下标指定)不是必需的,而列数(由第二个下标指定)是必需 编译器用这个形参中的二维数组的列数来确定元素的位置(在内存中).对二维数组来说,每一行是一个一维数组.要找到某个特定行中的元素,编译器必须准确地知道每一行有多少个元素,然后才能在访问数组时跳过确

c语言-C语言使用随机分布函数rand()%100;但是二维数组a[0][0]的值大于100,其他正常

问题描述 C语言使用随机分布函数rand()%100;但是二维数组a[0][0]的值大于100,其他正常 #include #include #define M 5 #define N 4 void china(int a[][N],int b[M]);/*给二维数组随机分配数值,并求二维数组每行数值之和*/ void orange(int a[][N],int b[M]);/*将付好值得数组和求和打印出来*/ void main() {int a[M][N],b[N]; china(a,b);

PHP中数组按键名和键值排序函数

而有时我们要求更复杂的排序.如按键名排序,这里用到 ksort($arr); 函数,它会根据数组的键名排序,并维持原有的键值关系.相对应的 asort($arr); 函数,是按键值排序,且维持原有的键值关系. 同样原理,rsort(); arsort(); krsort(); 函数除了排序是按降序排列外,其它与sort(); rsort(); ksort(); 相同. 数组操作是PHP很重要的基础,希望能好好运用. 一维数组 例子  代码如下 复制代码 <?php function my_sor

将数据库的内容读到二维数组并按指定列输出

数据|数据库|数组 <? $host = "localhost";   //主机名 $user = "root";        //mysql用户名 $password = "";    //mysql密码 $database = "doc";  //mysql数据库名 $tables = "mclass";  //表名 $conn=mysql_connect("$host",&

php对多维数组的某个键值排序方法

  php多维数组排序可以用array_multisort() 函数来处理,array_multisort() 函数可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序,关联(string)键名保持不变,但数字键名会被重新索引 排序顺序标志: SORT_ASC - 按照上升顺序排序 SORT_DESC - 按照下降顺序排序 排序类型标志: SORT_REGULAR - 将项目按照通常方法比较 SORT_NUMERIC - 将项目按照数值比较 SORT_STRING - 将项目按

php 二维数组的分组排序实现代码

分组排序  代码如下 复制代码 <?php $new2['group']['key']='time'; $new['aa']['b']=44; $new['aa']['c']=33; $new['aa']['d']=34; $new['bb']['b']=55; $new['bb']['c']=32; $new['cc']['4']=77; $new['dd']['g']=55; $new['dd']['c']=54; function arr_group_sort($new){      fo