PHP - Ds Set::sorted() 函数



PHP 的 Ds\Set::sorted() 函数用于检索集合的已排序副本,默认情况下,元素按升序排列。

此函数接受可选的 比较器 回调函数,可用于定义自定义排序顺序。此比较器函数必须返回一个整数,如果第一个参数分别小于、等于或大于第二个参数,则该整数小于、等于或大于零。

语法

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

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

参数

此函数接受单个参数作为“比较器”回调函数,如下所述:

  • 比较器 - 此参数包含一个比较两个值并返回整数值的函数。

以下是比较器(回调)函数的语法:

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

这里,ab 是需要比较的值。

返回值

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

示例 1

如果我们省略比较器函数,则 PHP Ds\Set::sorted() 函数将返回一个已排序的副本,其元素默认按升序排列:

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

输出

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

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
)

示例 2

如果我们将比较器函数作为参数传递,则此函数将根据比较和比较器回调函数返回的值返回已排序的副本。

以下是 PHP Ds\Set::sorted() 函数的另一个示例。我们使用此函数使用比较器回调函数检索此集合 ([20, 40, 80, 30, 60, 10, 50]) 的已排序副本:

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

输出

上述程序产生以下输出:

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