PHP - Ds Set::sort() 函数



PHP 的 Ds\Set::sort() 函数对当前集合中的元素进行排序。此函数对集合进行就地排序,这意味着它不会创建任何新的集合,而是仅仅修改原始集合。

此函数接受一个可选的“比较器”,用于比较两个值。根据比较器函数的返回值,元素将被排序。

语法

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

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

参数

以下是此函数的参数:

  • comparator - 一个可选的比较器函数,比较两个值并返回以下整数值。

如果第一个元素预期小于第二个元素,则返回1

如果第一个元素预期大于第二个元素,则返回-1

如果第一个元素预期等于第二个元素,则返回0

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

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

返回值

此函数不返回任何值。

示例 1

如果省略比较器函数,则 PHP Ds\Set::sort() 函数会按升序对集合元素进行排序。

<?php 
   $set = new \Ds\Set([20, 10, 30, 50, 40]); 
   echo "Original set elements: \n";
   print_r($set);
   $set->sort(); 
   echo "After sorting the set elements: \n";
   print_r($set); 
?>

输出

以上程序产生以下输出:

Original set elements:
Ds\Set Object
(
    [0] => 20
    [1] => 10
    [2] => 30
    [3] => 50
    [4] => 40
)
After sorting the set elements:
Ds\Set Object
(
    [0] => 10
    [1] => 20
    [2] => 30
    [3] => 40
    [4] => 50
)

示例 2

使用比较器函数按降序对集合值进行排序。

以下是 PHP Ds\Set::sort() 函数的另一个示例。我们使用此函数按降序对该集合 ([4, 5, 1, 3, 2]) 的元素进行排序。

<?php
   $set = new \Ds\Set([4, 5, 1, 3, 2]);
   echo "Original set elements: \n";
   print_r($set);
   $set->sort(function($x, $y) {
      return $y <=> $x;
   });
   echo "After sorting the set elements: \n";
   print_r($set);
?>

输出

以上程序产生以下输出:

Original set elements:
Ds\Set Object
(
    [0] => 4
    [1] => 5
    [2] => 1
    [3] => 3
    [4] => 2
)
After sorting the set elements:
Ds\Set Object
(
    [0] => 5
    [1] => 4
    [2] => 3
    [3] => 2
    [4] => 1
)

示例 3

在下面的示例中,我们使用sort()函数使用比较器函数按降序对该集合 ([10, 40, 50, 30, 20]) 的元素进行排序。比较器函数比较值并返回整数值 1、-1 和 0。

<?php
   $set = new \Ds\Set([10, 40, 50, 30, 20]);
   echo "Original set elements: \n";
   print_r($set);
   $comparator = function($a, $b){
	   if($a > $b){
		   return -1;
	   }
	   else if($a < $b){
		   return 1;
	   }
	   else{
		   return 0;
	   }
   };
   $set->sort($comparator);
   echo "After sorting the set elements: \n";
   print_r($set);
?>

输出

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

Original set elements:
Ds\Set Object
(
    [0] => 10
    [1] => 40
    [2] => 50
    [3] => 30
    [4] => 20
)
After sorting the set elements:
Ds\Set Object
(
    [0] => 50
    [1] => 40
    [2] => 30
    [3] => 20
    [4] => 10
)
php_function_reference.htm
广告