找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1424|回复: 0
打印 上一主题 下一主题

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

[复制链接]

2487

主题

2487

帖子

7391

积分

论坛元老

Rank: 8Rank: 8

积分
7391
跳转到指定楼层
楼主
发表于 2018-2-14 06:01:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            [U]复制代码[/U] 代码如下:
function array_sort($array, $key){
if(is_array($array)){
$key_array = null;
$new_array = null;
for( $i = 0; $i  $v){
$new_array[$j] = $array[$v];
$j++;
}
unset($key_array);
return $new_array;
}else{
return $array;
}
}
PHP二维数组按键值排序
PHP 中 array_multisort() 可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序。关联键名保持不变,但数字键名会被重新索引。输入数组被当成一个表的列并以行来排序,第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话就按照下一个输入数组中相应值的大小来排序,依此类推。
但是如果需要排序的数组是一个二维数组,需要按照数组的键值排序,如下面这个二维数组,需要按照sort键名来排序,那么array_multisort() 就无法直接实现了:
$data[5] = array('volume' => 67, 'edition' => 2);
$data[4] = array('volume' => 86, 'edition' => 1);
$data[2] = array('volume' => 85, 'edition' => 6);
$data[3] = array('volume' => 98, 'edition' => 2);
$data[1] = array('volume' => 86, 'edition' => 6);
$data[6] = array('volume' => 67, 'edition' => 7);
// 准备要排序的数组
foreach ($data as $k => $v) {
  $edition[] = $v['edition'];
}
array_multisort($edition, SORT_ASC, $data);
print_r($data);
将输出:
Array
(
  [0] => Array
    (
      [volume] => 86
      [edition] => 1
    )
  [1] => Array
    (
      [volume] => 67
      [edition] => 2
    )
  [2] => Array
    (
      [volume] => 98
      [edition] => 2
    )
  [3] => Array
    (
      [volume] => 85
      [edition] => 6
    )
  [4] => Array
    (
      [volume] => 86
      [edition] => 6
    )
  [5] => Array
    (
      [volume] => 67
      [edition] => 7
    )
)
为了不破坏原有的key,写了一个排序函数,仅支持二维数组。
/**
* 根据数组中的某个键值大小进行排序,仅支持二维数组
*
* @param array $array 排序数组
* @param string $key 键值
* @param bool $asc 默认正序
* @return array 排序后数组
*/
function arraySortByKey(array $array, $key, $asc = true)
{
  $result = array();
  // 整理出准备排序的数组
  foreach ( $array as $k => &$v ) {
    $values[$k] = isset($v[$key]) ? $v[$key] : '';
  }
  unset($v);
  // 对需要排序键值进行排序
  $asc ? asort($values) : arsort($values);
  // 重新排列原有数组
  foreach ( $values as $k => $v ) {
    $result[$k] = $array[$k];
  }

  return $result;
}
            
            
您可能感兴趣的文章:
  • PHP排序之二维数组的按照字母排序实现代码
  • php二维数组排序与默认自然排序的方法介绍
  • php二维数组排序详解
  • php二维数组排序方法(array_multisort usort)
  • PHP二维数组排序的3种方法和自定义函数分享
  • php冒泡排序、快速排序、快速查找、二维数组去重实例分享
  • PHP 二维数组根据某个字段排序的具体实现
  • php一维二维数组键排序方法实例总结
  • php对二维数组进行相关操作(排序、转换、去空白等)
  • PHP按指定键值对二维数组进行排序的方法
  • PHP实现二维数组根据key进行排序的方法
  • PHP实现二维数组按指定的键名排序的方法示例
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端