第一次$a='where', $b='what';第二次又是$a=where, $b=20 是排序规则起的作用
($a>$b) ? 1 : -1;表示从小到大 ($a>$b) ? -1 : 1;表示从大到小( 数字要比字母大)

解决方案 »

  1.   

    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 小于
      

  2.   

    呵呵,#1等于没说,#2只按一般原理说了
    没有说明为什么是
    where--what
    where--20
    how--where
    what--how自定义排序函数采用的是双向冒泡算法并结合了插入排序算法
    比较是从中心向两端展开的第2问手册已经说的很清楚了:
    比较函数必须在第一个参数被认为小于,等于或大于第二个参数时分别返回一个小于,等于或大于零的整数。