您当前的位置: 首页 > 网站编程 > PHP教程 > php对多维数组的某个键值排序方法

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

作者:不详 来源:网络 发布时间: 2014-07-29 22:55 点击:
php多维数组排序可以用array_multisort() 函数来处理,array_multisort() 函数可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序,关联(string)键名保持不变,但数字键名会被重新索引 排序顺序标志: SORT_ASC - 按照上升顺序排序 SORT_DESC -

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

  php多维数组排序可以用array_multisort() 函数来处理,array_multisort() 函数可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序,关联(string)键名保持不变,但数字键名会被重新索引

  排序顺序标志:

  SORT_ASC - 按照上升顺序排序

  SORT_DESC - 按照下降顺序排序

  排序类型标志:

  SORT_REGULAR - 将项目按照通常方法比较

  SORT_NUMERIC - 将项目按照数值比较

  SORT_STRING - 将项目按照字符串比较

  例子 1. 对多个数组排序

  

  

  

  

  

  

  

  

  

  

  
代码如下


  <?php

  $ar1 = array("10", 100, 100, "a");

  $ar2 = array(1, 3, "2", 1);

  array_multisort($ar1, $ar2);

  var_dump($ar1);

  var_dump($ar2);

  ?>

  


  本例中经过排序后,第一个数组将包含 "10","a",100,100。第二个数组将包含 1,1,"2",3。第二个数组中的项目顺序完全和第一个数组中相应的项目(100 和 100)顺序一致。

  但是这些都不可以指定由那个键值进行排名了,下面我就整理了几个函数算法都不错。

  示例代码

  

  

  

  

  

  

  

  

  

  

  
代码如下


  /**

  * 对多位数组进行排序

  * @param $multi_array 数组

  * @param $sort_key需要传入的键名

  * @param $sort排序类型

  */

  function multi_array_sort($multi_array, $sort_key, $sort = SORT_DESC) {

  if (is_array($multi_array)) {

  foreach ($multi_array as $row_array) {

  if (is_array($row_array)) {

  $key_array[] = $row_array[$sort_key];

  } else {

  return FALSE;

  }

  }

  } else {

  return FALSE;

  }

  array_multisort($key_array, $sort, $multi_array);

  return $multi_array;

  }

  


  例子二

  

  

  

  

  

  

  

  

  

  

  
代码如下


  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[] = $arr[$k];

  }

  return $new_array;

  }

  


  例子3

  

  

  

  

  

  

  

  

  

  

  
代码如下


  /*

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

  author:www.111cn.net

  */

  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;

  }

  


  例如有下列这样一个数组:

  

  

  

  

  

  

  

  

  

  

  
代码如下


  $array=array(

  0=>array('id'=>8,'username'=>'phpernote'),

  1=>array('id'=>9,'username'=>'com'),

  2=>array('id'=>5,'username'=>'www')

  );

  现在需要将这个二维数组按id升序排列,则:

  array_sort($array,'id','asc');

  
分享到:
本文"php对多维数组的某个键值排序方法"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4