-
php对二维数组按指定键值key排序示例代码
对二维数组按指定键值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;}
出处:http://www.phpfensi.com/php/20200706/13096.html
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式