详解PHP数组的比较函数(usort、uasort、uksort)对数组进行排序
用PHP把数据放在一个数组里是好的,但是顺序可能会不一致。
在这种情况下可以使用排序函数usort。
用usort进行排序
usort 是一个回调函数。
指定另一个函数作为函数的参数。
然后,通过比较另一个指定函数的结果来实现排序。
用于对多维数组(而不是一维数组)进行排序。
让我们通过样例代码来看看它的实际动作。
注释中的数字是为了稍后解释。
<?php function sort_test($right, $left){ // ② return strcmp($right["sports"], $left["sports"]); // ③ } $sports[0]['sports'] = 'tennis'; $sports[1]['sports'] = 'baseball'; $sports[2]['sports'] = 'swimming'; usort($sports, "sort_test"); // ① echo "<pre>"; print_r($sports); echo "</pre>"; ?>
执行结果
Array ( [0] => Array ( [sports] => baseball ) [1] => Array ( [sports] => swimming ) [2] => Array ( [sports] => tennis ) )
tennis→tennis→swimming的排列被重新排列为baseball→swimming→tennis。
程序的流程是
将要排序的数据放入数组中
↓
用usort调用函数
↓
与函数比较并排序
现在让我们解释一下代码。
① 用usort调用一个函数
指定要排序的数组作为第一个参数,函数名作为第二个参数。
②给被调用函数设置参数
我正在设置 $right 和 $left 变量,它们是什么?
它没有出现在任何地方。
事实上,第一个和第二个参数中的变量名称并不重要。
这是要自动比较的数组数据。
③与strcmp比较
strcmp是PHP的比较函数。
比较结果返回的值有如下不同。
当第一个参数<第二个参数时返回负整数
当第一个参数>第二个参数时返回正整数
当第一个参数=第二个参数时返回0
用usort调用的函数的返回值必须是负整数、正整数或 0。
需要注意的是用usort排序的结果是数组的key也被排序改变了。
不改变键值排序(uasort函数)
这是 uasort 函数,用于排序以使数组键不变。
让我们稍微更改一下 usort 示例代码并查看结果。
<?php function sort_test($right, $left){ return strcmp($right["sports"], $left["sports"]); } $sports[0]['sports'] = 'tennis'; $sports[1]['sports'] = 'baseball'; $sports[2]['sports'] = 'swimming'; usort($sports, "sort_test"); // usort更改为uasort echo "<pre>"; print_r($sports); echo "</pre>"; ?>
执行结果
Array ( [1] => Array ( [sports] => baseball ) [2] => Array ( [sports] => swimming ) [0] => Array ( [sports] => tennis ) )
比较值的顺序已重新排列。
并且数组的键仍然是原始值。
当您不想更改数组键时使用它。
按键排序(uksort函数)
接下来介绍一下uksort函数,一个key排序的函数。
同样的,我们把usort示例代码稍微改一下,看看结果。
<?php function sort_test($right, $left){ return strcmp($right, $left); } $sports[6]['sports'] = 'tennis'; $sports[4]['sports'] = 'baseball'; $sports[0]['sports'] = 'swimming'; uksort($sports, "sort_test"); // usort更改为uksort echo "<pre>"; print_r($sports); echo "</pre>"; ?>
执行结果
Array ( [0] => Array ( [sports] => swimming ) [4] => Array ( [sports] => baseball ) [6] => Array ( [sports] => tennis ) )
可以看到结果按键名对数组进行排序。
结语
以上就是关于PHP数组使用比较函数对数组进行重新排序的全部内容 。
请运行示例代码,加深理解。
本文来源:词雅网
本文地址:https://www.ciyawang.com/php-usort.html
本文使用「 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 」许可协议授权,转载或使用请署名并注明出处。
相关推荐
-
Array_combine函数:让数组合并更简单
引言作为一名程序员,我们经常需要合并两个或多个数组。这时候,一个非常方便的函数就出现了,那就是array_combine函数。什么是array_combine函数?array_combine函数是PH...
-
使用PHP读取本地文件的方法
对于需要处理本地文件的PHP应用程序,读取本地文件是必不可少的操作。本文将介绍如何使用PHP读取本地文件。使用file_get_contents函数读取本地文件file_get_contents函数是...
-
PHP Cookies设置:了解cookie是如何工作的
在Web开发中,cookie是一种常见的技术,可以帮助我们保存用户信息,跟踪用户行为和提供个性化体验。在本文中,我们将深入探讨PHP cookies的设置。1. 什么是cookie?cookie是一种...
-
php获取当前月份及相关应用
在PHP中,获取当前月份的方法非常简单。只需要使用date()函数,并指定参数为“m”即可。代码如下:$month = date("m"); echo&nbs...
-
使用PHP的strip_tags()函数从字符串中去除HTML标签
strip_tags()函数可以从字符串中去除HTML标签。请注意,使用allow参数允许的HTML标记不会被剥离,但通常HTML标记总是被剥离。 顺便说一句,它有一个二...
-
如何使用PHP读取文件的6种方法
总结了用PHP读取文件的方法。 试着用6种方法读入文件。 file函数...
-
在PHP中检查文件存在的两种方法!(is_file)
我正在写如何检查 PHP 中是否存在“具有指定路径的文件”。 您可以使用以下两个函数来检查文件路径是否存在。...
-
通俗易懂的讲解nl2br()函数,将换行代码转换成br标签
这次,我将解释将换行字符转换为br标签的nl2br函数! 它非常容易使用! 但是,如果nl2br()函数使用不正确,它可能无法正确转换,所以需要注意!...
-
使用pathinfo函数轻松获取扩展名和文件名
你是否遇到过只想从文件路径中提取文件名或扩展名的情况? 我认为有多种方法,例如使用split分隔符拆分文件路径或使用substr函数提取文件路径。 但是...
-
使用PHP的is_null()函数检查变量是否为NULL
使用PHP的is_null()函数检查变量是否为NULL。 NULL表示没有值,不同于“0”或空字符串。 is_null()函数允许您检查变量是否为NU...