PHP - Ds Map::diff() 函式



PHP 的Ds\Map::diff() 函式透過使用另一個對映中不存在的鍵建立一個新的對映,並返回從當前例項(例如對映)中刪除在給定對映中存在的鍵的結果。

如果第一個對映中的鍵也存在於第二個對映中,則此函式返回一個空()對映。例如,map1 = (["1" => 1, "2" => 2]),map2 = (["1" => 1, "2" => 2, "3" => 3]),因此 map1->diff(map2) 將為空 ( ),因為 map1 的鍵 1 和 2 存在於 map2 中。

語法

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

public Ds\Map Ds\Map::diff( Ds\Map $map )

引數

此函式接受一個“map”作為引數,如下所述:

  • map - 另一個對映,包含要從結果對映中排除的鍵。

返回值

此函式返回從當前例項中刪除在給定對映中存在的鍵的結果。

示例 1

以下程式演示了 PHP Ds\Map::diff() 函式的用法:

<?php  
   $map1 = new \Ds\Map(["1" => 10, "2" => 20, "3" => 30]);               
   $map2 = new \Ds\Map(["3" => 30, "4" => 40, "5" => 50]);
   echo "The map1 elements are: \n";
   print_r($map1);
   echo "The map2 elements are: \n";
   print_r($map2);
   echo "The difference is: \n";
   print_r($map1->diff($map2));
?>

輸出

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

The map1 elements are:
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
        )

)
The map2 elements are:
Ds\Map Object
(
    [0] => Ds\Pair Object
        (
            [key] => 3
            [value] => 30
        )

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

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

)
The difference is:
Ds\Map Object
(
    [0] => Ds\Pair Object
        (
            [key] => 1
            [value] => 10
        )

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

)

示例 2

以下是 PHP Ds\Map::diff() 函式的另一個示例。我們使用此函式使用此對映 (["2" => "Point", "3" => "Tutorials", "4" => "Tutorix"]) 中不存在的鍵建立一個新的對映:

<?php  
   $map1 = new \Ds\Map(["1" => "Tutorials", "2" => "Point", "3" => "India"]);   
   $map2 = new \Ds\Map(["2" => "Point", "3" => "Tutorials", "4" => "Tutorix"]);
   echo "The map1 elements are: \n";
   foreach($map1 as $key=>$value){
	   echo "[".$key."] = ".$value."\n";
   }
   echo "\nThe map2 elements are: \n";
   foreach($map2 as $key=>$value){
	   echo "[".$key."] = ".$value."\n";
   }
   echo "\nThe difference is: \n";
   #using diff() function
   print_r($map1->diff($map2));
?> 

輸出

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

The map1 elements are:
[1] = Tutorials
[2] = Point
[3] = India

The map2 elements are:
[2] = Point
[3] = Tutorials
[4] = Tutorix

The difference is:
Ds\Map Object
(
    [0] => Ds\Pair Object
        (
            [key] => 1
            [value] => Tutorials
        )

)

示例 3

如果兩個對映都具有元素的相同鍵,則即使值不同,兩個對映的差值也將為空。

<?php  
   $map1 = new \Ds\Map(["1" => 'a', '2' => "b", '3' => 'c']);   
   $map2 = new \Ds\Map(["1" => 'd', '2' => "e", '3' => 'f']);
   echo "The map1 elements are: \n";
   foreach($map1 as $key=>$value){
	   echo "[".$key."] = ".$value."\n";
   }
   echo "\nThe map2 elements are: \n";
   foreach($map2 as $key=>$value){
	   echo "[".$key."] = ".$value."\n";
   }
   echo "\nThe difference is: \n";
   #using diff() function
   print_r($map1->diff($map2));
?> 

輸出

上述程式顯示以下輸出:

The map1 elements are:
[1] = a
[2] = b
[3] = c

The map2 elements are:
[1] = d
[2] = e
[3] = f

The difference is:
Ds\Map Object
(
)
php_function_reference.htm
廣告