PHP - Ds Map::sort() 函数



PHP 的Ds\Map::sort()函数用于默认情况下按升序对映射的元素进行就地排序。“就地”表示它修改原始映射,而不会创建或存储任何新内存。

此函数接受一个可选参数,您可以使用该参数指定基于返回值的条件来对映射中的元素进行排序。

以下是比较器函数的一些重要要点:

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

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

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

语法

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

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

参数

以下是此函数的参数:

  • comparator(可选) - 一个可选的比较器函数,比较元素并返回一个整数值。

以下是comparator函数的语法:

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

返回值

此函数不返回值。

示例 1

如果省略可选的comparator函数,则此函数会按升序对元素进行排序。

以下程序演示了 PHP Ds\Map::sort()函数的用法:

<?php 
   $map = new \Ds\Map([20, 10, 30]); 
   echo "The map elements before sorting: \n";
   print_r($map);
   echo "The map elements after sorting: \n";
   #using sort() function
   $map->sort(); 
   print_r($map); 
?>

输出

上述程序产生以下输出:

The map elements before sorting:
Ds\Map Object
(
    [0] => Ds\Pair Object
        (
            [key] => 0
            [value] => 20
        )

    [1] => Ds\Pair Object
        (
            [key] => 1
            [value] => 10
        )

    [2] => Ds\Pair Object
        (
            [key] => 2
            [value] => 30
        )

)
The map elements after sorting:
Ds\Map Object
(
    [0] => Ds\Pair Object
        (
            [key] => 1
            [value] => 10
        )

    [1] => Ds\Pair Object
        (
            [key] => 0
            [value] => 20
        )

    [2] => Ds\Pair Object
        (
            [key] => 2
            [value] => 30
        )

)

示例 2

如果我们将比较器函数作为参数传递给PHP Ds\Map::sort()函数,则元素将根据指定的比较器函数条件进行排序:

<?php 
   $map = new \Ds\Map([5, 1, 4, 3, 2]);
   echo "The map elements before sorting: \n";
   foreach($map as $key=>$value){
	   echo "[".$key."] = ".$value."\n";
   }
   $func = function($first, $second) { 
      if($first > $second) 
         return -1; 
      else if($first < $second) 
         return 1;
      else 
         return 0;
   }; 
   $map->sort($func); 
   echo "The map elements before sorting: \n";
   foreach($map as $key=>$value){
	   echo "[".$key."] = ".$value."\n";
   } 
?>

输出

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

The map elements before sorting:
[0] = 5
[1] = 1
[2] = 4
[3] = 3
[4] = 2
The map elements before sorting:
[0] = 5
[2] = 4
[3] = 3
[4] = 2
[1] = 1

示例 3

让我们尝试在不使用comparator函数的情况下对包含字符值 (['a', 'i', 'u', 'o', 'e']) 的映射的元素进行排序。

<?php 
   $map = new \Ds\Map(['a', 'i', 'u', 'o', 'e']);
   echo "The map elements before sorting: \n";
   foreach($map as $key=>$value){
	   echo "[".$key."] = ".$value."\n";
   } 
   $map->sort(); 
   echo "The map elements before sorting: \n";
   foreach($map as $key=>$value){
	   echo "[".$key."] = ".$value."\n";
   }
?>

输出

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

The map elements before sorting:
[0] = a
[1] = i
[2] = u
[3] = o
[4] = e
The map elements before sorting:
[0] = a
[4] = e
[1] = i
[3] = o
[2] = u
php_function_reference.htm
广告
© . All rights reserved.