PHP - Ds Map::filter() 函式



PHP 的 Ds\Map::filter() 函式用於透過使用可呼叫函式來建立一個新的對映,該函式確定要包含哪些鍵值對。

可呼叫函式是一個可選引數,它返回一個布林值以指示應包含哪些鍵值對。如果未提供此函式,則 filter() 函式建立一個包含所有轉換為“true”的鍵值對的新對映。

語法

以下是 PHP Ds\Map::filter() 函式的語法:

public Ds\Map::filter(callable $callback = ?): Ds\Map

引數

以下是此函式的引數:

  • callback - 一個可選的可呼叫函式,如果應包含鍵值對,則返回“true”,否則返回“false”。

返回值

此函式返回一個新對映,其中包含所有回撥返回 true 的鍵值對,或者如果未提供回撥,則包含所有轉換為 true 的值。

示例 1

以下是 PHP Ds\Map::filter() 函式的基本示例:

<?php  
   $map = new \Ds\Map([1 => 10, 2 => 20, 3 => 30, 4 => 40, 5 => 60]);
   echo "The original map elements: ";
   print_r($map);
   echo "The new map is: \n";
   var_dump($map->filter(function($key, $val) {  
      return $val % 15 == 0;  
   }));  
?>

輸出

上述程式產生以下輸出:

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

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

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

    [3] => Ds\Pair Object
        (
            [key] => 4
            [value] => 40
        )

    [4] => Ds\Pair Object
        (
            [key] => 5
            [value] => 60
        )

)
The new map is:
object(Ds\Map)#5 (2) {
  [0]=>
  object(Ds\Pair)#6 (2) {
    ["key"]=>
    int(3)
    ["value"]=>
    int(30)
  }
  [1]=>
  object(Ds\Pair)#4 (2) {
    ["key"]=>
    int(5)
    ["value"]=>
    int(60)
  }
}

示例 2

以下是 PHP Ds\Map::filter() 函式的另一個示例。我們使用此函式透過使用一個可呼叫函式來建立一個新的對映,該函式確定將從原始對映 ([1 => "Tutorials", 2 => "Point", 3 => "India", 4 => "Tutorix", 5 => "Hyderabad", 6 => "India"]) 中包含哪些鍵值對:

<?php 
   $map = new \Ds\Map([
   1 => "Tutorials", 
   2 => "Point", 
   3 => "India", 
   4 => "Tutorix", 
   5 => "Hyderabad", 
   6 => "India"
   ]);
   echo "The original map elements are: \n";
   foreach($map as $key=>$value){
	   echo "[".$key."] = ".$value."\n";
   }
   echo "\nThe new map: \n";
   var_dump($map->filter(function($key, $val) {
      return $key % 2 == 0;  
   }));  
?>

輸出

執行上述程式後,它將顯示以下輸出:

The original map elements are:
[1] = Tutorials
[2] = Point
[3] = India
[4] = Tutorix
[5] = Hyderabad
[6] = India

The new map:
object(Ds\Map)#3 (3) {
  [0]=>
  object(Ds\Pair)#2 (2) {
    ["key"]=>
    int(2)
    ["value"]=>
    string(5) "Point"
  }
  [1]=>
  object(Ds\Pair)#4 (2) {
    ["key"]=>
    int(4)
    ["value"]=>
    string(7) "Tutorix"
  }
  [2]=>
  object(Ds\Pair)#5 (2) {
    ["key"]=>
    int(6)
    ["value"]=>
    string(5) "India"
  }
}

示例 3

如果省略可呼叫函式,則此函式將包含所有其值轉換為 true 的鍵值對。

<?php 
   $map = new \Ds\Map([
   1 => 'a', 
   2 => 'e', 
   3 => 'i', 
   4 => 'o', 
   5 => 'u',
   ]);
   echo "The original map elements are: \n";
   foreach($map as $key=>$value){
	   echo "[".$key."] = ".$value."\n";
   }
   echo "\nThe new map: \n";
   $new_map = $map->filter();
   foreach($new_map as $key=>$value){
	   echo "[".$key."] = ".$value."\n";
   }
?>

輸出

執行上述程式後,它將生成以下輸出:

The original map elements are:
[1] = a
[2] = e
[3] = i
[4] = o
[5] = u

The new map:
[1] = a
[2] = e
[3] = i
[4] = o
[5] = u
php_function_reference.htm
廣告