1、自定义函数是如何工作的。如a_sort:第一次$a='where', $b='what';第二次又是$a=where, $b=20.....为什么会是这样? $a,$b是a_sort,b_sort方法定义的参数,每次都会把数组中的需要比较的元素通过$a,$b这两个参数传入到方法执行比较。 所以每次的$a,$b是不同的。第一次$a='where', $b='what';第二次又是$a=where, $b=20. 因为比较过程就是,把数组中每一个元素都与其他元素做一次比较。 现在$arr = array('a'=>'what', 'b'=>'where', 'c'=>20, 'd'=>'how'); 所以会执行 a b a c a d 比较 然后 b c b d 最后 c d 比较2.return 0, 1, -1表示什么意思,如何影响排序? 0 相等 1 大于 -1 小于
$a,$b是a_sort,b_sort方法定义的参数,每次都会把数组中的需要比较的元素通过$a,$b这两个参数传入到方法执行比较。
所以每次的$a,$b是不同的。第一次$a='where', $b='what';第二次又是$a=where, $b=20.
因为比较过程就是,把数组中每一个元素都与其他元素做一次比较。
现在$arr = array('a'=>'what', 'b'=>'where', 'c'=>20, 'd'=>'how');
所以会执行
a b
a c
a d
比较
然后
b c
b d
最后
c d
比较2.return 0, 1, -1表示什么意思,如何影响排序?
0 相等
1 大于
-1 小于
没有说明为什么是
where--what
where--20
how--where
what--how自定义排序函数采用的是双向冒泡算法并结合了插入排序算法
比较是从中心向两端展开的第2问手册已经说的很清楚了:
比较函数必须在第一个参数被认为小于,等于或大于第二个参数时分别返回一个小于,等于或大于零的整数。