PHP头条
热点:

PHP usort()的使用,phpusort使用


关于PHP中usort()函数的解读

  

bool usort ( array &$array , callable $cmp_function )

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

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

1 <?php
2 function re($a,$b){
3     return ($a<$b)?1:-1;
4 }
5 $x=array(1,3,2,5,9);
6 usort($x, 're');
7 print_r($x);
8 ?>

打印结果为:

1 2 3 4 5 6 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来排序。

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

 1 function Compare($str1, $str2) {
 2     if (($str1 % 2 == 0) && ($str2 %2 == 0)) {
 3         if ($str1 > $str2)
 4             return - 1;
 5         else
 6             return 1;
 7     }
 8     if ($str1 % 2 == 0)
 9         return 1;
10     if ($str2 % 2 == 0)
11         return -1;
12     return ($str2 > $str1) ? 1 : - 1;
13 }
14 $scores = array (22,57,55,12,87,56,54,11);
15 usort ( $scores, 'Compare' );
16 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进行从大到小排序;

输出结果为:

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


www.phpzy.comtrue/php/6651.htmlTechArticlePHP usort()的使用,phpusort使用 关于PHP中usort()函数的解读 bool  usort  (  array  $array  ,  callable  $cmp_function  ) 函数为对数组进行自己自定义排序,排序规则由  $cmp_function 定义。 返回值为...

相关文章

    暂无相关文章
相关频道:

PHP之友评论

今天推荐