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 PHPDs\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 PHPDs\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
)