PHP - Ds Sequence::sort() 函数



PHP 的 Ds\Sequence::sort() 函数用于对序列的元素进行就地排序。术语 “就地” 表示该函数在现有序列中对元素进行排序,而无需为新序列分配额外的内存。

默认情况下,元素按“升序”排序。但是,您可以提供一个可选的比较器函数以自定义顺序(例如降序)对序列进行排序。

语法

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

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

参数

以下是此函数的参数:

  • comparator - 比较函数比较元素,并且必须返回一个整数值。

以下是 comparator 函数的语法:

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

返回值

此函数不返回值。

示例 1

如果省略比较器函数,则 Ds\Sequence::sort() 函数默认情况下会按升序对序列元素进行排序,如下所示

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

输出

以上程序产生以下输出:

The original sequence:
Ds\Vector Object
(
    [0] => 2
    [1] => 7
    [2] => 1
    [3] => 9
    [4] => 6
    [5] => 3
)
The sequence after sort:
Ds\Vector Object
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 6
    [4] => 7
    [5] => 9
)

示例 2

以下是 PHP Ds\Sequence::sort() 函数的另一个示例。我们使用此函数使用比较器函数按降序对当前序列 ([3, 5, 11, 2, 6, 1, 4, 9]) 元素进行排序:

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

输出

执行上述程序后,将显示以下输出:

The sequence before sorting:
Ds\Vector Object
(
    [0] => 3
    [1] => 5
    [2] => 11
    [3] => 2
    [4] => 6
    [5] => 1
    [6] => 4
    [7] => 9
)
The sequence after sorting:
Ds\Vector Object
(
    [0] => 11
    [1] => 9
    [2] => 6
    [3] => 5
    [4] => 4
    [5] => 3
    [6] => 2
    [7] => 1
)
php_function_reference.htm
广告