usort: sorting by user defined function

We can sort an array in PHP by using a user defined comparison function. In the function usort we can use our own sort criteria by using one function. This way we get the flexibility to sort the array by using some non-trivial criteria. You can read many standard way of sorting the array given here.

Here is the user defined function has to have some matching requirements. One is it has to accept two variables. It should return either 0,less than 0 or greater than 0 based on the matching where first element is less than , equal to or greater than second element.

Using this now let us try to sort one array. Here the input array has some words and we will arrange the elements in the order of their length. So after the sorting the small word ( by length ) will be at the first and the longest word will to the end.

This usort function does not retain the associated index or the key of the elements of the array.

Here is the code for the above script. The output of the code is given below that.
function compare($x,$y){
return 0;
 return ($x < $y) ? -1 : 1;


$input = array ("Pineapple", "Orange", "Banana", "Mango", "Apple","Strawberry","aaa","bb");
while (list ($key, $val) = each ($input)) {
echo "$key -> $val <br>";
usort($input, "compare");
echo "<br>-----After usort---------<br>";
while (list ($key, $val) = each ($input)) {
echo "$key -> $val <br>";
Here is the output of usort function where user defined comparisons function is used

0 -> Pineapple 
1 -> Orange
2 -> Banana
3 -> Mango
4 -> Apple
5 -> Strawberry
6 -> aaa
7 -> bb

-----After usort---------
0 -> bb
1 -> aaa
2 -> Apple
3 -> Mango
4 -> Orange
5 -> Banana
6 -> Pineapple
7 -> Strawberry

Subscribe to our YouTube Channel here


* indicates required
Subscribe to plus2net

    Post your comments , suggestion , error , requirements etc here .

    We use cookies to improve your browsing experience. . Learn more
    HTML MySQL PHP JavaScript ASP Photoshop Articles FORUM . Contact us
    ©2000-2024 All rights reserved worldwide Privacy Policy Disclaimer