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