php函数usort使用方法

news2025/2/26 22:06:42

在 PHP 中,usort() 函数用于对数组进行排序,它允许你使用自定义的比较函数来确定元素的顺序。以下是 usort() 函数的使用方法:
在这里插入图片描述

usort(array &$array, callable $cmp_function): bool

参数说明:

  • $array:要排序的数组,是传入函数的引用。
  • $cmp_function:自定义的比较函数,用于确定元素的顺序。

返回值:
如果成功排序数组,则返回 true,否则返回 false

使用 usort() 函数时,你需要提供一个自定义的比较函数,该函数定义了元素之间的排序规则。比较函数应该接受两个参数,即要比较的两个元素,并返回一个整数值,表示它们的相对顺序。

下面是一个示例,演示如何使用 usort() 函数对数组进行排序:

// 自定义比较函数
function compare($a, $b) {
    // 按照字符串长度进行排序
    if (strlen($a) < strlen($b)) {
        return -1;
    } elseif (strlen($a) > strlen($b)) {
        return 1;
    } else {
        return 0;
    }
}

// 要排序的数组
$array = array("apple", "banana", "cherry", "date");

// 使用 usort 函数进行排序
usort($array, "compare");

// 打印排序后的数组
print_r($array);

输出结果:

Array
(
    [0] => date
    [1] => apple
    [2] => banana
    [3] => cherry
)

在上面的示例中,我们定义了一个名为 compare 的自定义比较函数,它根据字符串的长度确定元素的顺序。然后,我们使用 usort() 函数将数组 $array 按照该比较函数进行排序。最后,我们打印排序后的数组,得到了按照字符串长度递增的顺序排列的元素。

这里再举一个稍微复杂一点的数组排序的列子:

如何将一个二维数组安某一列的值在另一个一维数组的顺序排序:

$arra = ['5413_BJ063','5408_BJ062','5278_BJ061','5043_BJ059','5018_BJ058','2256_BJ004','2264_BJ012','2274_BJ022'];

$arrb =[
['name'=>'11111','sn'=>'5018_BJ058','prrice'=>30],
['name'=>'22222','sn'=>'5413_BJ063','prrice'=>40],
['name'=>'33333','sn'=>'2256_BJ004','prrice'=>20],
['name'=>'4444','sn'=>'5018_BJ058','prrice'=>10],
['name'=>'5555','sn'=>'2264_BJ012','prrice'=>5],
['name'=>'6666','sn'=>'5043_BJ059','prrice'=>25],
['name'=>'77777','sn'=>'5018_BJ058','prrice'=>12],
['name'=>'88888','sn'=>'2274_BJ022','prrice'=>60],
['name'=>'99999','sn'=>'5408_BJ062','prrice'=>70],
]

foreach(array_reverse($arra) as $itemv){
	$GLOBALS['itemv'] = $itemv;
	usort($dgtop_goods, function ($a, $b) {
		if ($b['goods_sn'] == $GLOBALS['itemv']) {
			return 1;
		};
		return $a['goods_sn'] == $GLOBALS['itemv'] ? 0 : 0;
	});
}

这种一般用在把查出来的文章或商品按指定的顺序排序的情况,非常有用,实现时用到了php的两个函数

array_reverse
usort

期望对大家有用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1027317.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

增强企业的网络防御:从哪里开始

在当今的数字环境中&#xff0c;网络安全事件已经变得异常普遍&#xff0c;影响着各种规模和行业的企业。中小型企业 (SME) 不再局限于知名组织&#xff0c;由于其潜在的漏洞和应对复杂威胁的资源有限&#xff0c;越来越多地成为网络犯罪分子的目标。 2023 年第一季度&#xf…

Wi-Fi7将带来前所未有的快捷、稳定的互联网,更快的传输速度

随着科技的飞速发展&#xff0c;无线连接技术也日渐成熟与先进。Wi-Fi&#xff0c;作为我们日常生活和工作中不可或缺的一部分&#xff0c;也正在迎来技术的革新。我们将有机会见识到新一代的Wi-Fi技术&#xff0d;&#xff0d;Wi-Fi 7&#xff0c;它将带来前所未有的快捷、稳定…

DES算法子密钥的生成过程

DES算法的一次执行中将进行16轮迭代加密&#xff1b; 从原始的56位密钥中得到16个轮密钥k&#xff0c;每个轮密钥ki是48位&#xff1b; 轮密钥也叫子密钥&#xff1b; 下面看一下子密钥的生成过程&#xff1b; 大体过程是这样&#xff1b;看下图&#xff0c; 此图来自 34.《…

『贪吃蛇』AI 算法简易实现(中秋特别版)

前言 一年一度的中秋节就快到了&#xff0c;平台也有各种各样的中秋发文活动&#xff0c;正在翻阅时偶然间我看到了这篇文章&#xff1a;《兔饼大作战》&#xff1a;吃月饼、见月亮&#xff0c;还能咬自己&#xff1f;| 欢庆中秋特制版 - 掘金 (juejin.cn) 大家肯定比较熟悉了…

XML文件序列化读取

原始XML文件 <?xml version"1.0" encoding"utf-8" ?> <School headmaster"王校长"><Grade grade"12" teacher"张老师"><Student name"小米" age"18"/><Student name&quo…

重装系统(配置环境)

这里写目录标题 0.重装系统1.python1.1 anaconda1.2 pycharm1.3 深度学习环境配置 2.java2.1.安装JDK2.2.配置JDK环境变量2.3IDEA2.4 Maven 3.大数据3.1 虚拟机3.2 Hadoop平台3.3 存储3.4 采集3.5 计算3.6 查询3.7 可视化 0.重装系统 // An highlighted block var foo bar;1.…

Python爬虫(二十一)_Selenium与PhantomJS

本章将介绍使用Selenium和PhantomJS两种工具用来加载动态数据&#xff0c;更多内容请参考&#xff1a;Python学习指南 Selenium Selenium是一个Web的自动化测试工具&#xff0c;最初是为网站自动化测试而开发的&#xff0c;最初是为网站自动化测试而开发的&#xff0c;类型像我…

数据包络分析(DEA)——CCR模型

写在前面&#xff1a; 博主本人大学期间参加数学建模竞赛十多余次&#xff0c;获奖等级均在二等奖以上。为了让更多学生在数学建模这条路上少走弯路&#xff0c;故将数学建模常用数学模型算法汇聚于此专栏&#xff0c;希望能够对要参加数学建模比赛的同学们有所帮助。 目录 1. …

单元测试spring-boot-starter-test

参考博客&#xff1a; https://www.cnblogs.com/mzc1997/p/14306538.html 配置pom junit-vintage-engine junit4 junit-jupiter-engine junit5 排除junit4使用junit5,两者在切换时要特别注意 <dependency><groupId>org.springframework.boot</groupId><…

惯性动捕+数据手套,让“虚拟”触手可及

当今&#xff0c;虚拟现实技术已经从科幻电影走进现实生活。在数字化时代&#xff0c;惯性动作捕捉系统与数据手套的结合使用&#xff0c;带给我们全新的虚拟互动体验&#xff0c;使虚拟世界更能够“触手可及”。 01 惯性动作捕捉系统 FOHEART MAGIC是一款高性能的惯性动作捕…

windows 安装Linux子系统 Ubuntu 并配置python3

环境说明&#xff1a; Windows 11 Ubuntu 20.04.6 安装步骤以及问题&#xff1a; 1、开启Windows Subsystem for Linux dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart 2、开启虚拟机特性 dism.exe /online /enabl…

【Linux】常用工具(下)

Linux常用工具 一、Linux 项目自动化构建工具 - make/Makefile1. 依赖关系和依赖方法2. 伪目标3. make/Makefile 具有依赖性的推导能力&#xff08;语法扩展&#xff09;4. 编写一个进度条代码&#xff08;1&#xff09;缓冲区&#xff08;2&#xff09;\n 和 \r&#xff08;3&…

一句话设计模式12:适配器模式

适配器模式: 继承原对象,持有目标对象; 文章目录 适配器模式: 继承原对象,持有目标对象;前言一、适配器模式的作用二、如何适配器模式直接上代码 总结 前言 适配器模式一般使用场景是: 将一个类(接口)转换成客户希望的另外一个类(接口)。其中适配器充当一个假的原类的作用; 一…

读高性能MySQL(第4版)笔记12_查询性能优化(下)

1. “快速、精确和实现简单” 1.1. 三者永远只能满足其二&#xff0c;必须舍掉一个 2. 排序优化 2.1. 无论如何排序都是一个成本很高的操作&#xff0c;所以从性能角度考虑&#xff0c;应尽可能避免排序或者尽可能避免对大量数据进行排序 2.2. 文件排序&#xff08;filesor…

数组和指针笔试题解析之【指针】

目录 &#x1f342;笔试题1&#xff1a; &#x1f342;笔试题2&#xff1a; &#x1f342;笔试题3&#xff1a; &#x1f342;笔试题4&#xff1a; &#x1f342;笔试题5&#xff1a; &#x1f342;笔试题6&#xff1a; &#x1f342;笔试题7&#xff1a; &#x1f342;笔试题…

实施主品牌进化战略(一):确立主品牌进化架构

主品牌进化战略&#xff0c;即以主品牌为核心创造、巩固、转化竞争优势应对竞争环境变化&#xff0c;避免衰退&#xff0c;回归增长&#xff0c;让主品牌进化的方法论体系。主品牌进化战略制定要从 4 个方面出发&#xff1a;确立主品牌进化架构、更新和明确主品牌竞争方向、建立…

Java高级-注解

注解 1.介绍2.元注解3.注解的解析4.注解的应用场景 1.介绍 注解 Annotation 就是Java代码里的特殊标记&#xff0c;作用是让其他程序根据注解信息来决定什么是执行该程序注解&#xff1a;注解可以在类上、构造器上、方法上、成员变量上、参数上等位置 自定义注解 /*** 自定…

【产品经理】深入B端SaaS产品设计核心理念

这几年各企业的B端业务都在做SaaS平台&#xff0c;但对SaaS的了解还不是完全全面&#xff0c;对于一些产品的定位以及设计还在探索中 本文讨论“为什么采用SaaS模式”、“SaaS产品有哪些”以及“如何做好SaaS产品设计”三个话题&#xff0c;核心是产品设计&#xff0c;主要从需…

Qt5开发及实例V2.0-第九章-Qt文件及磁盘处理

Qt5开发及实例V2.0-第九章-Qt文件及磁盘处理 第9章 Qt 5文件及磁盘处理9.1 读写文本文件9.1.1 QFile类读写文本9.1.2 QTextStream类读写文本 9.2 读写二进制文件9.3 目录操作与文件系统9.3.1 文件大小及路径获取实例9.3.2 文件系统浏览 9.4 获取文件信息9.5 监视文件和目录变化…

由于数字化转型对集成和扩展性的要求,定制化需求难以满足,百数低代码服务商该如何破局?

当政策、技术环境的日益成熟&#xff0c;数字化转型逐步成为企业发展的必选项&#xff0c;企业数字化转型不再是一道选择题&#xff0c;而是决定其生存发展的必由之路。通过数字化转型升级生产方式、管理模式和组织形式&#xff0c;激发内生动力&#xff0c;成为企业顺应时代变…