php对二维数组按指定键值key排序示例代码
发布:smiling 来源: PHP粉丝网 添加日期:2020-07-06 17:09:29 浏览: 评论:0
对二维数组按指定键值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){
- $new_array[$j] = $array[$v];
- $j++;
- } //phpfensi.com
- 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;}
Tags: php二维数组排序
- 上一篇:php数组去重实例及分析
- 下一篇:php对二维数组进行排序的简单实例
相关文章
- ·php二维数组排序后获取最大值(2014-07-14)
- ·PHP二维数组排序问题详解(数组键值排序)(2014-07-15)
- ·php二维数组排序与遍历(2014-09-19)
- ·怎么用PHP实现二维数组按照键值排序(2020-03-30)
- ·php二维数组排序详解(2020-05-16)
- ·php对二维数组进行排序的简单实例(2020-08-11)
- ·一个PHP二维数组排序的函数分享(2020-08-27)
- ·PHP二维数组排序的3种方法和自定义函数分享(2020-11-08)
- ·php实例分享之二维数组排序(2020-12-25)
- ·php中二维数组排序问题方法详解(2021-06-16)
- ·php对二维数组进行相关操作(排序、转换、去空白等)(2021-06-25)
- ·PHP按指定键值对二维数组进行排序的方法(2021-06-30)
- ·PHP二维数组排序简单实现方法(2021-07-09)
- ·php自定义二维数组排序函数array_orderby用法示例(2021-09-05)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)