MathPHP\SetTheory\Set::difference PHP Method

difference() public method

Difference (relative complement) (A ∖ B) or (A - B) Produces a new set with elements that are not in the other sets.
public difference ( variadic $Bs ) : Set
$Bs variadic One or more sets
return Set
    public function difference(Set ...$Bs) : Set
    {
        $B_members = [];
        foreach ($Bs as $B) {
            $B_members += $B->asArray();
        }
        $difference = array_diff_key($this->A, $B_members);
        return new Set($difference);
    }

Usage Example

 public function testDifferenceWithObjects()
 {
     $vector1 = new Vector([1, 2, 3]);
     $vector2 = new Vector([1, 2, 3]);
     $A = new Set([1, 2, $vector1]);
     $B = new Set([2, 3, $vector2]);
     $A∖B = $A->difference($B);
     $expected = new Set([1, $vector1]);
     $this->assertEquals($expected, $A∖B);
     $this->assertEquals($expected->asArray(), $A∖B->asArray());
     $A = new Set([1, 2, $vector1]);
     $B = new Set([2, 3, $vector2, $vector1]);
     $A∖B = $A->difference($B);
     $expected = new Set([1]);
     $this->assertEquals($expected, $A∖B);
     $this->assertEquals($expected->asArray(), $A∖B->asArray());
 }