Home > Backend Development > PHP Tutorial > How to use usort() in PHP

How to use usort() in PHP

墨辰丷
Release: 2023-03-25 20:46:01
Original
3250 people have browsed it


This article mainly introduces how to use usort() in PHP. Interested friends can refer to it. I hope it will be helpful to everyone.

The function performs its own custom sorting of the array, and the sorting rules are defined by $cmp_function. The return value is true or false.

Now let’s analyze a simple function:

<?php
function re($a,$b){
           return ($a<$b)?1:-1;
          }5 $x=array(1,3,2,5,9);
      usort($x, &#39;re&#39;)    
      print_r($x);
?>
Copy after login


The print result is :

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

Implements the reverse order of the array. The analysis is as follows:

usort extracts the values ​​​​in the array in pairs and inputs them into the custom function in order. The custom function returns 1 or -1 according to the content; usort returns 1 or -1 according to the return value , get the incoming value 1 to be "greater than" or "less than" the value 2, and then sort the values ​​from small to large. That is: The return value is 1, indicating that value 1 is "greater" than value 2, and then sorting: value 2 -> value 1; the return value is -1, indicating that value 1 is "less than" value 2, and then sorting : Value 1-> Value 2.

In the above custom function, if $a<$b returns 1 correctly, it means that $a" is greater than" $b, and it will be sorted in the order $b->$a; if it returns -1 in error, Description: $a is "less than" $b, then sort in the order $a->$b.

The following is a more complex sorting: first odd and then even, and then sort from large to small.

function Compare($str1, $str2) { 
    if (($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, &#39;Compare&#39; );
print_r ( $scores );
Copy after login

The implementation steps are:

1》Determine whether the two input values ​​​​are both even numbers, both are even numbers, and sort from large to small;

2》If If not all are even numbers, then at least one is an odd number. First determine whether $str1 is an even number. If it is an even number, that is: if ($str1%2==0) is established, then return 1, which means $str1 is "greater than" $str2 , then the usort function sorts into "small" $str2-> "large" $str1 (even number);

3》If $str1 is an odd number, the above does not return any value, and then determines $str2 Whether it is an even number, if it is an even number, it returns -1, which means $str1 is "less than" $str2, and the usort function sorts it into "small" $str1 (odd number) -> "large" $str2 (even number) ;

4》If both values ​​​​are odd numbers, no value will be returned above, and then $str1 and $str2 will be sorted from large to small;

The output result is:

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

Related recommendations:

How to use the PHP function usort() to implement custom sorting_PHP tutorial

PHP_I love U of (1) PHP Food and Beverage Parents: Use the usort() function to sort a two-dimensional array

What should I do if the usort() function in PHP is an unstable sort?

The above is the detailed content of How to use usort() in PHP. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template