• PHP Video Tutorials

PHP - Ds Set::sorted() Function



The PHP Ds\Set::sorted() function is used to retrieve a sorted copy of a set, with elements arranged in ascending order by default.

This function accepts an optional comparator callback function that can be provided to define a custom sorting order. This comparator function must return an integer less than, equal to, or greater than zero if the first argument is considered to be respectively less than, equal to, or greater than the second argument.

Syntax

Following is the syntax of the PHP Ds\Set::sorted() function −

public Ds\Set Ds\Set::sorted([ callable $comparator ])

Parameters

This function accepts a single parameter as a "comparator" callback function, which is described below −

  • comparator − This parameter holds a function that compares two values and returns an integer value.

Following is the syntax of the comparator (callback) function −

comparator(mixed $a, mixed $b): int

Here, a and b are values that need to be compared.

Return value

This function returns a sorted copy of a set.

Example 1

If we omitted the comparator function, the PHP Ds\Set::sorted() function returns a sorted copy with elements arranged in ascending order by default −

<?php   
   $set = new \Ds\Set([2, 1, 3, 5, 4]);
   echo "The set elements are: \n";
   print_r($set);
   echo "The sorted copy of this set: \n";
   #using sorted() function without callback function   
   print_r($set->sorted());
?>

Output

On executing the above program, it will generate the following output −

The set elements are:
Ds\Set Object
(
    [0] => 2
    [1] => 1
    [2] => 3
    [3] => 5
    [4] => 4
)
The sorted copy of this set:
Ds\Set Object
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
)

Example 2

If we pass the comparator function as an argument, this function returns a sorted copy based on the comparison and the value returns by the comparator callback function.

Here is another example of the PHP Ds\Set::sorted() function. We use this function to retrieve a sorted copy of this set ([20, 40, 80, 30, 60, 10, 50]) using the comparator callback function −

<?php  
   $set = new \Ds\Set([20, 40, 80, 30, 60, 10, 50]);  
   echo "The original set elements are: \n";
   print_r($set);
   #using comparator function
   $sorted = $set->sorted(function($x, $y) { 
      return $y <=> $x; 
   });
   echo "The sorted copy of this set: \n";
   print_r($sorted); 
?>

Output

The above program produces the following output −

The original set elements are:
Ds\Set Object
(
    [0] => 20
    [1] => 40
    [2] => 80
    [3] => 30
    [4] => 60
    [5] => 10
    [6] => 50
)
The sorted copy of this set:
Ds\Set Object
(
    [0] => 80
    [1] => 60
    [2] => 50
    [3] => 40
    [4] => 30
    [5] => 20
    [6] => 10
)
php_function_reference.htm
Advertisements