关于使用自定义函数对数组排序,该如何处理
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了关于使用自定义函数对数组排序,该如何处理,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1729字,纯文字阅读大概需要3分钟。
内容图文
关于使用自定义函数对数组排序比如函数uasort(),比较两个自定义函数:
function a_sort($a, $b){
echo $a . '--' . $b . "
";
if($a==$b) return 0;
return ($a>$b) ? 1 : -1;
}
function b_sort($a, $b){
echo $a . '--' . $b . "
";
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 "
--------------------
";
$arr = array('a'=>'what', 'b'=>'where', 'c'=>20, 'd'=>'how');
uasort($arr, 'b_sort');
print_r($arr);
?>
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问手册已经说的很清楚了:
比较函数必须在第一个参数被认为小于,等于或大于第二个参数时分别返回一个小于,等于或大于零的整数。
内容总结
以上是互联网集市为您收集整理的关于使用自定义函数对数组排序,该如何处理全部内容,希望文章能够帮你解决关于使用自定义函数对数组排序,该如何处理所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。