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