关于使用自定义函数对数组排序

WBOY
Lepaskan: 2016-06-23 13:50:07
asal
1273 orang telah melayarinya

比如函数uasort(),比较两个自定义函数:

<?phpfunction a_sort($a, $b){	echo $a . '--' . $b . "<br />";	if($a==$b) return 0;	return ($a>$b) ? 1 : -1;}function b_sort($a, $b){	echo $a . '--' . $b . "<br />";	if($a==$b) return 0;	return ($a>$b) ? -1 : 1;}$arr = array('a'=>'what', 'b'=>'where', 'c'=>20, 'd'=>'how');uasort($arr, 'a_sort');print_r($arr);echo "<br />--------------------<br />";$arr = array('a'=>'what', 'b'=>'where', 'c'=>20, 'd'=>'how');uasort($arr, 'b_sort');print_r($arr);?>
Salin selepas log masuk


1、自定义函数是如何工作的。如a_sort:第一次$a='where', $b='what';第二次又是$a=where, $b=20.....为什么会是这样?
2、return 0, 1, -1表示什么意思,如何影响排序?


回复讨论(解决方案)

第一次$a='where', $b='what';第二次又是$a=where, $b=20 是排序规则起的作用
($a>$b) ? 1 : -1;表示从小到大 ($a>$b) ? -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 小于

呵呵,#1等于没说,#2只按一般原理说了
没有说明为什么是
where--what
where--20
how--where
what--how

自定义排序函数采用的是双向冒泡算法并结合了插入排序算法
比较是从中心向两端展开的

第2问手册已经说的很清楚了:
比较函数必须在第一个参数被认为小于,等于或大于第二个参数时分别返回一个小于,等于或大于零的整数。

呵呵,#1等于没说,#2只按一般原理说了
没有说明为什么是
where--what
where--20
how--where
what--how

自定义排序函数采用的是双向冒泡算法并结合了插入排序算法
比较是从中心向两端展开的

第2问手册已经说的很清楚了:
比较函数必须在第一个参数被认为小于,等于或大于第二个参数时分别返回一个小于,等于或大于零的整数。


版主果然牛B
Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!