php-usort函数笔记

usort函数官方文档

说明
usort ( array &$array , callable $value_compare_func ) : bool
本函数将用用户自定义的比较函数对一个数组中的值进行排序。 如果要排序的数组需要用一种不寻常的标准进行排序,那么应该使用此函数。
Note:
如果两个成员比较为相等,则它们在排序数组中的相对顺序未定义。
Note: 此函数为 array 中的元素赋与新的键名。这将删除原有的键名,而不是仅仅将键名重新排序。

参数
array
输入的数组
cmp_function
在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数。
callback ( mixed $a, mixed $b ) : int
警告:从比较函数返回非整数值(如float)将导致回调返回值的内部强制转换为整数。因此,0.99和0.1这样的值都将被转换为0的整数值,这将比较这些值,使其相等。

返回值
成功时返回 TRUE, 或者在失败时返回 FALSE。 

官方文档里没有说明cmp_function函数返回小于,等于或大于 0 的整数时,会对array的比较值会做如何操作.

测试脚本

function cmp( $a, $b ) {
	if( $a === $b ) return 0;
	return $a < $b? 1: -1;
}

$list = [5,2,3,6,4,7,8,1,9,0];
$list = [5,2];

var_dump( $list );

usort( $list, 'cmp' );

var_dump( $list );

执行

$>php test.php
array(2) {
  [0]=>
  int(5)
  [1]=>
  int(2)
}
array(2) {
  [0]=>
  int(5)
  [1]=>
  int(2)
}

总结

cmp_function函数返回大于0值得整数时才会最array的比较值$a,$b的位置进行调换.

需要大到小排序时,在$a<$b时返回1.反过来就是小到大排序.

posted @ 2020-12-18 15:07  何必丶丶  阅读(158)  评论(0编辑  收藏  举报