PHP - Ds Sequence::sorted() 函数



PHP 的 Ds\Sequence::sorted() 函数用于创建一个新的序列,其元素默认按**升序**排序。此方法返回原始序列的已排序副本。

如果要按自定义顺序(例如“降序”)对元素进行排序,可以提供一个可选的**比较器**函数。比较器函数允许您定义如何比较和排序元素。

语法

以下是 PHP Ds\Sequence::sorted() 函数的语法:

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

参数

此函数接受一个名为“比较器”函数的单个参数,如下所述:

  • 比较器 - 比较元素的比较函数,必须返回一个整数值。

以下是“比较器”函数的语法:

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

返回值

此函数返回序列的已排序副本。

示例 1

在不提供比较器函数的情况下使用 PHP Ds\Sequence::sorted() 函数时,它会按升序对元素进行排序,并创建一个包含已排序元素的新序列,如下所示:

<?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()); 
?>

输出

以下是上述程序的输出:

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
)

示例 2

以下是 PHP Ds\Sequence::sorted() 函数的另一个示例。我们使用此函数使用“比较器”函数创建按降序排序的元素的新序列:

<?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
   }));
?>

输出

执行上述程序后,它会生成以下输出:

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
广告