PHP - Ds Sequence::sorted() Function



The PHP Ds\Sequence::sorted() function is used to create a new sequence with elements sorted in ascending order by default. This method returns a sorted copy of the original sequence.

If you want the elements to be sorted in a custom order, such as "descending" order, you can provide an optional comparator function. The comparator function allows you to define how the elements should be compared and ordered.

Syntax

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

abstract public Ds\Sequence::sorted(callable $comparator = ?): Ds\Sequence

Parameters

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

  • comparator − A comparison function compares elements and must return an integer value.

Following is the syntax of the "comparator" function −

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

Return value

This function returns a sorted copy of a sequence.

Example 1

When you use the PHP Ds\Sequence::sorted() function without providing a comparator function, it sorts the elements in ascending order and creates a new sequence with the sorted elements as follows:

<?php 
   $seq = new \Ds\Vector([7, 2, 4, 1, 6, 5, 9]);
   echo "The original sequence: \n";
   print_r($seq);
   echo "The new sequence with sorted elements: \n";
   #using sorted() function
   print_r($seq->sorted()); 
?>

Output

Following is the output of the above program −

The original sequence:
Ds\Vector Object
(
    [0] => 7
    [1] => 2
    [2] => 4
    [3] => 1
    [4] => 6
    [5] => 5
    [6] => 9
)
The new sequence with sorted elements:
Ds\Vector Object
(
    [0] => 1
    [1] => 2
    [2] => 4
    [3] => 5
    [4] => 6
    [5] => 7
    [6] => 9
)

Example 2

Following is another example of the PHP Ds\Sequence::sorted() function. We use this function to create a new sequence with elements sorted in descending order using the "comparator" function −

<?php 
   $seq = new \Ds\Vector([3, 5, 11, 2, 6, 1, 4, 9]);
   echo "The original sequence: \n";
   print_r($seq);
   echo "The new sequence with sorted elements: \n";
   #using sorted() function
   print_r($seq->sorted(function($x, $y) {
      return $y <=> $x; #sorting in descending order
   }));
?>

Output

Once the above program is executed, it generates the following output −

The original sequence:
Ds\Vector Object
(
    [0] => 3
    [1] => 5
    [2] => 11
    [3] => 2
    [4] => 6
    [5] => 1
    [6] => 4
    [7] => 9
)
The new sequence with sorted elements:
Ds\Vector Object
(
    [0] => 11
    [1] => 9
    [2] => 6
    [3] => 5
    [4] => 4
    [5] => 3
    [6] => 2
    [7] => 1
)
php_function_reference.htm
Advertisements