• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP中usort()的使用方法

php 搞代码 3年前 (2022-01-22) 28次浏览 已收录 0个评论

本篇文章主要介绍PHP中usort()的使用方法,感兴趣的朋友参考下,希望对大家有所帮助。

函数为对数组进行自己自定义排序,排序规则由 $cmp_function 定义。返回值为ture 或者false。

现在先对简单的一个函数进行分析:

<?phpfunction re($a,$b){           return ($a<$b)?1:-1;          }5 $x=array(1,3,2,5,9);      usort($x, 're')          print_r($x);?>

打印结果为:

Array(    [0] => 9    [1] => 5    [2] => 3    [3] => 2    [4] => 1<br>)

实现了数组的倒序排列。分析如下:

  usort两两提取数组中的数值,并按顺序输入自定义函数中,自定义函数根据内容返回1或者-1;usort根据返回值为1或者-1,得到传入的数值1“大于”或者“小于”数值2,然后对数值进行从小到大的排序。即:返回值为1,说明数值1“大于”数值2,然后排序:数值2—>数值1;返回值为-1,说明数值1“小于”数值2,然后排序:数值1->数值2。

  上面自定义函数中,$a<$b如果正确返回1,说明$a"大于"$b,则按照顺序$b->$a来排序;如果错误返回-1,说明说明$a"小于"$b,则按照顺序$a->$b来排序。

  下面进行一个较为复杂的排序:对一个数组先奇后偶,然后再进行从大到小排序。

function Compare($str1, $str2) {     i<div>本文来*源gaodai^.ma#com搞#代!码网</div><pre>搞gaodaima代码

f (($str1 % 2 == 0) && ($str2 %2 == 0)) { if ($str1 > $str2) return – 1; else return 1; } if ($str1 % 2 == 0) return 1; if ($str2 % 2 == 0) return -1; return ($str2 > $str1) ? 1 : – 1;}$scores = array (22,57,55,12,87,56,54,11);usort ( $scores, 'Compare' );print_r ( $scores );

实现步骤为:

1》判断输入的两个值是否都为偶数,都为偶数,进行从大到小排序;

2》如果不都为偶数,则至少一个为奇数,先判断$str1是否为偶数,如果为偶数,即:if($str1%2==0)成立,则返回1,意味着$str1“大于”$str2,则usort函数进行排序为“小的”$str2->“大的”$str1(偶数);

3》如果$str1为奇数,上面不返回任何值,接着判断$str2是否为偶数,如果为偶数,则返回-1,意味着$str1“小于”$str2,则usort函数进行排序为“小的”$str1(奇数)->“大的”$str2(偶数);

4》如果两个值都为奇数,则上面不返回任何值,接着对$str1和$str2进行从大到小排序;

输出结果为:

Array(    [0] => 87    [1] => 57    [2] => 55    [3] => 11    [4] => 56    [5] => 54    [6] => 22    [7] => 12)

相关推荐:

如何运用PHP函数usort()实现自定义排序_PHP教程

PHP_I love U之(1)php衣食父母:使用usort()函数为二维数组排序

PHP中的usort() 函数是非稳定排序怎么办?

以上就是PHP中usort()的使用方法的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP中usort()的使用方法
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址