首页 > 其他分享 >二维数组排序,按其中某项排序

二维数组排序,按其中某项排序

时间:2023-08-07 19:12:42浏览次数:33  
标签:sort SORT int 某项 arrays 二维 array 排序

/**
 * 二维数组排序
 * @param $arrays         目标数组
 * @param $sort_key       要排序的键
 * @param int $sort_order 升序|降序
 * @param int $sort_type  数字|字符串|通常
 * @return $arrays        
 */
function my_sort($arrays, $sort_key, $sort_order = SORT_DESC, $sort_type = SORT_NUMERIC)
{
    if (is_array($arrays)) {
        foreach ($arrays as $array) {
            if (is_array($array)) {
                $key_arrays[] = $array[$sort_key];
            } else {
                return false;
            }
        }
    } else {
        return false;
    }
    array_multisort($key_arrays, $sort_order, $sort_type, $arrays);
    return $arrays;
}

array_multisort() 可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序。
关联(string)键名保持不变,但数字键名会被重新索引。
排序顺序标志:
  ● SORT_ASC - 按照上升顺序排序
  ● SORT_DESC - 按照下降顺序排序
排序类型标志:
  ● SORT_REGULAR - 将项目按照通常方法比较
  ● SORT_NUMERIC - 将项目按照数值比较
  ● SORT_STRING - 将项目按照字符串比较
  
  
$ar1 = array(10, 100, 100, 0);
$ar2 = array(1, 3, 2, 4);
array_multisort($ar1, $ar2);
 
var_dump($ar1);
var_dump($ar2);
 
array(4) {
  [0]=> int(0)
  [1]=> int(10)
  [2]=> int(100)
  [3]=> int(100)
}
array(4) {
  [0]=> int(4)
  [1]=> int(1)
  [2]=> int(2)
  [3]=> int(3)
}

标签:sort,SORT,int,某项,arrays,二维,array,排序
From: https://www.cnblogs.com/fuqian/p/17612477.html

相关文章

  • LeetCode 周赛上分之旅 #38 结合排序不等式的动态规划
    ⭐️本文已收录到AndroidFamily,技术和职场问题,请关注公众号[彭旭锐]和BaguTreePro知识星球提问。学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度也更复杂。在这个专栏里,小彭与你分享每场LeetCode周赛的解题报告,一......
  • 洛谷 P8500 - [NOI2022] 冒泡排序
    显然将权值离散化是没有问题的,因为必然存在一组最优解,满足每个\(a_i\)都取自于某个\(V_i\),于是不管三七二十一先将\(V_i\)离散化了再说。考虑从部分分入手逐步分析这道题:特殊性质A:\(V_i=1\)相当于这个区间中的数必须是\(1\),先将这些数去掉不管,紧接着考虑\(V_i=0\)的......
  • 笔记 | Sort 的实现逻辑与排序算法
    一、SortSort()的功能是对数组元素就地进行排序,会改变数组本身(返回对象同数组的引用)。默认排序顺序是,先将元素转换为字符串后进行排序。有一个可选参数compareFunction定义排序顺序的函数。返回值应该是一个数字,其正负性表示两个元素的相对顺序。array.sort([compareFunct......
  • C关于一维数组以及二维数组的创建和简单利用(下)
    #include<stdio.h>intmain(){inta[3][4]={{1,2,3,4},{1,2,3,4},{1,2,3,4}};intb=0;for(b=0;b<3;b+=1){intc=0;for(c=0;c<4;c+=1){printf("%p||",&a[b][c]);......
  • C语言定义并初始化一个二维数组(利用二级指针)
    C语言定义并初始化一个二维数组(利用二级指针)1.代码如下#include<stdio.h>#include<stdlib.h>intmain(){//m,n表示数组的行数和列数intm,n;scanf("%d%d",&m,&n);//p是一个二级指针,使用malloc函数初始化。注意p指向的是一个指针,所以sizeof操作......
  • C语言定义并初始化一个二维数组(利用指针数组)
    C语言定义并初始化一个二维数组(利用指针数组),可以实现二位数组的每一行的元素个数不同1.代码如下#include<stdio.h>#include<stdlib.h>intmain(){//arr是一个指针数组,即这个数组的所有元素都是指针,每一个元素都指向一个int型数组,每一个int型数组的长度可以不同......
  • 「学习笔记」二维数点
    P2163[SHOI2007]园丁的烦恼-洛谷|计算机科学教育新生态(luogu.com.cn)这个是二维数点的板子题,二维数点这一类题目就是上面的题所描述的,我们用树状数组+离散化来解决这个问题。这里就不解释了,记录此篇博文的目的主要就是提醒自己曾经学过这个,看看代码,方便回忆起来。这......
  • qrcode生成二维码
    jsqrcode包生成二维码安装npminstall--saveqrcode或者,全局安装以便从命令行保存qrcode图像或生成您可以在您的终端中查看的图像。npminstall-gqrcode使用importQRCodefrom"qrcode"letcode="string....";QRCode.toDataURL(code,{errorCorrect......
  • 拓补排序
    #include<iostream>#include<algorithm>#include<vector>#include<stack>#defineN1001usingnamespacestd;intn,m,x,y;//顶点,边,vector<int>G[N];//动态数组stack<int>q;intcnt[N],tpc;boolpd(){for(inti=1;i<=n......
  • 实现二维卷积层
    importtorchfromtorchimportnnfromd2limporttorchasd2ldefcorr2d(x,k):"""计算二维互相关运算"""#获取卷积核的高和宽h,w=k.shape#输出的高和宽y=torch.zeros((x.shape[0]-h+1,x.shape[1]-w+1))foriinrange(y.shape[0......