usort-使用用户自定义的比较函数对数组中的值进行排序
发表日期:2021-06-29 09:57:29 | 来源: | | 浏览(689) 分类:PHP杂项
usort
(PHP 4, PHP 5, PHP 7, PHP 8)
usort — 使用用户自定义的比较函数对数组中的值进行排序
说明
usort(array &$array
, callable $callback
): bool
本函数将用用户自定义的比较函数对一个数组中的值进行排序。 如果要排序的数组需要用一种不寻常的标准进行排序,那么应该使用此函数。
注意:
如果两个成员完全相同,那么它们在排序数组中的相对顺序是未定义的。
注意: 此函数为
array
中的元素赋与新的键名。这将删除原有的键名,而不是仅仅将键名重新排序。
参数
array
输入的数组
callback
在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数。
callback(mixed
$a
, mixed$b
): int警告
Returning non-integer values from the comparison function, such as float, will result in an internal cast toint of the callback's return value. So values such as 0.99 and 0.1 will both be cast to an integer value of 0, which will compare such values as equal.
返回值
成功时返回 true
, 或者在失败时返回 false
。
范例
示例 #1 usort() 例子
<?php function cmp($a, $b){ if ($a == $b) { return 0; } return ($a < $b) ? -1 : 1; } $a = array(3, 2, 5, 6, 1); usort($a, "cmp"); foreach ($a as $key => $value) { echo "$key: $value\n"; } ?>
以上例程会输出:
0: 1 1: 2 2: 3 3: 5 4: 6
注意:
很明显在这个小例子中用 sort() 函数更合适。
示例 #2 使用多维数组的 usort() 例子
<?php function cmp($a, $b){ return strcmp($a["fruit"], $b["fruit"]); } $fruits[0]["fruit"] = "lemons"; $fruits[1]["fruit"] = "apples"; $fruits[2]["fruit"] = "grapes"; usort($fruits, "cmp"); while (list($key, $value) = each($fruits)) { echo "$fruits[$key]: " . $value["fruit"] . "\n"; } ?>
当排序多维数组时,和包含到数组第一个索引的引用。
以上例程会输出:
$fruits[0]: apples $fruits[1]: grapes $fruits[2]: lemons
示例 #3 usort() example using a member function of an object
<?php class TestObj { var $name; function TestObj($name) { $this->name = $name; } /* This is the static comparing function: */ static function cmp_obj($a, $b) { $al = strtolower($a->name); $bl = strtolower($b->name); if ($al == $bl) { return 0; } return ($al > $bl) ? +1 : -1; } } $a[] = new TestObj("c"); $a[] = new TestObj("b"); $a[] = new TestObj("d"); usort($a, array("TestObj", "cmp_obj")); foreach ($a as $item) { echo $item->name . "\n"; } ?>
以上例程会输出:
b c d
示例 #4 usort() example using a closure to sort a multi-dimensional array
<?php $array[0] = array('key_a' => 'z', 'key_b' => 'c'); $array[1] = array('key_a' => 'x', 'key_b' => 'b'); $array[2] = array('key_a' => 'y', 'key_b' => 'a'); function build_sorter($key) { return function ($a, $b) use ($key) { return strnatcmp($a[$key], $b[$key]); } ; } usort($array, build_sorter('key_b')); foreach ($array as $item) { echo $item['key_a'] . ', ' . $item['key_b'] . "\n"; } ?>
以上例程会输出:
y, a x, b z, c
参见
- PHP(0)
- PHP杂项(34)
- ip白黑名单验证(0)
- 自实现getallheaders函数 获取header信息(0)
- 随机颜色(0)
- 中文全角半角互转(0)
- 字符和unicode互转(0)
- 日期时间友好展示为今天/昨天/前天/分钟/小时/天前(0)
- 递归创建多级目录(0)
- 字符串截取追加...(0)
- 批量反/转义特殊字符,数据库安全过滤写入,支持字符串、多维数组、对象集合(0)
- 压缩HTML,去换行空格,注释(0)
- 获取文章html中的img标签图片src地址(0)
- html过滤标签空格提取纯文本text(0)
- 自实现http_build_url 函数(0)
- 获取浏览器类型版本及操作系统类型(0)
- curl请求及注意事项(0)
- 二维数组排序(0)
- 文件字节大小换算KB、MB、GB、TB(0)
- 数字金额转汉字大写(0)
- 验证身份证号是否有效(0)
- 批量替换文件名(0)
- 批量修改照片文件名日期排序(0)
- PHP中文编程(0)
- PHP命令行工具-在Linux下写shell脚本(0)
- usort-使用用户自定义的比较函数对数组中的值进行排序(0)
- PHP 使用 curl 提交 json 格式数据(0)
- tp+nginx(0)
- nginx配置(0)
- PHP测试mysql数据库MYSQLI和PDO的性能比较(0)
- PHP高级扩展介绍,高手必学(0)
- 数组转XML(0)
- Memcache和Redis的区别(0)
- PHP7.0新特性(0)
- PHP中的魔术方法总结 :__construct, __destruct等..(0)
- PHP配置文件php.ini详解(0)
- PHP基础-李炎恢系列课程(20)
- 中文函数手册(0)
- 错误处理 函数(13)
- OPcache 函数(6)
- PHP 选项/信息 函数(54)
- Zip 函数(10)
- Hash 函数(15)
- OpenSSL 函数(63)
- Date/Time 函数(51)
- 目录函数(9)
- Fileinfo 函数(6)
- iconv 函数(11)
- 文件系统函数(81)
- 多字节字符串 函数(57)
- GD 和图像处理 函数(114)
- 可交换图像信息(5)
- Math 函数(50)
- 程序执行函数(11)
- PCNTL 函数(23)
- JSON 函数(4)
- SPL 函数(15)
- URL 函数(10)
- cURL 函数(32)
- 网络 函数(33)
- FTP 函数(36)
- Session 函数(23)
- PCRE 函数(11)
- PCRE 正则语法(19)
- 数组 函数(81)
- 类/对象 函数(18)
- 函数处理 函数(13)
- 变量处理 函数(37)
- SimpleXML 函数(3)
- 杂项 函数(31)
- 字符串 函数(101)