Menge - (math\set.class.php)

new math\set() - Object

$array set = array() Die Elemente der Menge (stets eindeutig und nummerisch indexiert)
__construct ([$mixed $elements = null])
$elements optional; einzelnes Element, Array von Elementen oder ein anderes set-Objekt; default ist null
initialisiert eine neue Mengen-Instanz und fügt optionale Anfangselemente hinzu
$a = new math\set([1, 2, 3]);
$empty = new math\set(); // Leere Menge {∅}
__toString ()
gibt die textuelle Darstellung der Menge in der mathematischen Schreibweise zurück: '{1, 2, 3}' bzw. '{∅}' für die leere Menge
$set = new math\set([1, 2]);
echo $set; // Ausgabe: {1, 2}
add ([$mixed $element = false])
$element optional; Einzelwert, Array von Werten oder set-Instanz; default ist false
fügt ein oder mehrere Elemente zur Menge hinzu; Duplikate werden automatisch herausgefiltert; gibt $this zur Methodenverkettung zurück
$set = new math\set();
$set->add(1)->add([2, 3, 3]);
echo $set; // Ausgabe: {1, 2, 3}
remove ($mixed $element)
$element zu entfernendes Element; Pflicht
entfernt ein Element aus der Menge, falls vorhanden; nummeriert die internen Indizes neu; gibt $this zur Methodenverkettung zurück
$set = new math\set([1, 2, 3]);
$set->remove(2);
echo $set; // Ausgabe: {1, 3}
contains ($mixed $element)
$element gesuchtes Element; Pflicht
prüft mit striktem Typvergleich, ob ein Element in der Menge enthalten ist (x ∈ A); gibt true bei Erfolg zurück, andernfalls false
$set = new math\set(['a', 'b']);
$set->contains('a'); // true
$set->contains('c'); // false
isEmpty ()
prüft, ob die Menge leer ist (A = ∅); gibt true zurück wenn keine Elemente enthalten sind, andernfalls false
$set = new math\set();
$set->isEmpty(); // true
clear ()
leert die gesamte Menge; gibt $this zur Methodenverkettung zurück
$set = new math\set([1, 2]);
$set->clear();
$set->isEmpty(); // true
count ()
gibt die Mächtigkeit bzw. Kardinalität der Menge (|A|) als integer zurück; implementiert das PHP-Interface \Countable (ermöglicht auch count($set))
$set = new math\set([10, 20, 30]);
$set->count(); // 3
count($set); // 3
toArray ()
gibt die Elemente der Menge als reines, nummerisch indexiertes PHP-array zurück
$set = new math\set([1, 2]);
$set->toArray(); // [1, 2]
sort ([$integer $flags = SORT_REGULAR])
$flags optional; Sortier-Flag (z. B. SORT_REGULAR, SORT_NUMERIC, SORT_STRING); default ist SORT_REGULAR
sortiert die Elemente der Menge aufsteigend; gibt $this zur Methodenverkettung zurück
$set = new math\set([3, 1, 2]);
$set->sort();
echo $set; // Ausgabe: {1, 2, 3}
getIterator ()
implementiert das PHP-Interface \IteratorAggregate; gibt ein \ArrayIterator-Objekt zurück, womit die Instanz direkt in foreach durchlaufen werden kann
$set = new math\set(['Apfel', 'Birne']);
foreach ($set as $item) {
  // $item verarbeiten
}

Operationen

union ($mixed $other)
$other zweite Menge als math\set oder array; Pflicht
Vereinigung (A ∪ B): Alle Elemente, die in A oder B enthalten sind; gibt eine neue math\set-Instanz zurück
$a = new math\set([1, 2]);
$b = new math\set([2, 3]);
$result = $a->union($b); // {1, 2, 3}
intersect ($mixed $other)
$other zweite Menge als math\set oder array; Pflicht
Schnittmenge (A ∩ B): Nur Elemente, die in beiden Mengen vorkommen; gibt eine neue math\set-Instanz zurück
$a = new math\set([1, 2, 3]);
$b = new math\set([2, 3, 4]);
$result = $a->intersect($b); // {2, 3}
diff ($mixed $other)
$other abzuziehende Menge als math\set oder array; Pflicht
Differenzmenge bzw. relatives Komplement (A \ B): Alle Elemente aus A, die nicht in B sind; gibt eine neue math\set-Instanz zurück
$a = new math\set([1, 2, 3]);
$b = new math\set([2, 4]);
$result = $a->diff($b); // {1, 3}
symmetricDiff ($mixed $other)
$other zweite Menge als math\set oder array; Pflicht
Symmetrische Differenz (A Δ B): Elemente in A oder B, aber nicht in beiden ((A \ B) ∪ (B \ A)); gibt eine neue math\set-Instanz zurück
$a = new math\set([1, 2, 3]);
$b = new math\set([2, 3, 4]);
$result = $a->symmetricDiff($b); // {1, 4}
cartesianProduct ($mixed $other)
$other zweite Menge als math\set oder array; Pflicht
Kartesisches Produkt (A × B): Berechnet alle geordneten Paare (a, b) über math::cartesianProduct(); gibt ein 2D-array aller Paare zurück
$a = new math\set([1, 2]);
$b = new math\set(['x', 'y']);
$result = $a->cartesianProduct($b);
// [[1, 'x'], [1, 'y'], [2, 'x'], [2, 'y']]
powerSet ()
Potenzmenge P(A): Erzeugt die Menge aller Teilmengen von A inklusive der leeren Menge und A selbst (2|A| Teilmengen) über math::combinations(); gibt ein array gefüllt mit math\set-Instanzen zurück
$set = new math\set([1, 2]);
$potenz = $set->powerSet();
// Array mit 4 math\set Objekten: {∅}, {1}, {2}, {1, 2}

Mengenbeziehungen

isSubsetOf ($mixed $other)
$other Vergleichsmenge als math\set oder array; Pflicht
prüft, ob diese Menge eine Teilmenge einer anderen ist (A ⊆ B); jedes Element von A muss auch in B enthalten sein; gibt true zurück, andernfalls false
$teil = new math\set([1, 2]);
$gesamt = new math\set([1, 2, 3]);
$teil->isSubsetOf($gesamt); // true
isProperSubsetOf ($mixed $other)
$other Vergleichsmenge als math\set oder array; Pflicht
prüft, ob diese Menge eine echte Teilmenge einer anderen ist (A ⊂ B); A ist Teilmenge von B und B enthält mindestens ein zusätzliches Element (A ≠ B); gibt true zurück, andernfalls false
$a = new math\set([1, 2]);
$b = new math\set([1, 2]);
$a->isProperSubsetOf($b); // false
$c = new math\set([1, 2, 3]);
$a->isProperSubsetOf($c); // true
isSupersetOf ($mixed $other)
$other Vergleichsmenge als math\set oder array; Pflicht
prüft, ob diese Menge eine Obermenge einer anderen ist (A ⊇ B); alle Elemente der Vergleichsmenge müssen in dieser Menge enthalten sein; gibt true zurück, andernfalls false
$gesamt = new math\set([1, 2, 3]);
$teil = new math\set([2, 3]);
$gesamt->isSupersetOf($teil); // true
isDisjointWith ($mixed $other)
$other Vergleichsmenge als math\set oder array; Pflicht
prüft, ob zwei Mengen disjunkt sind (A ∩ B = ∅); es dürfen keine gemeinsamen Elemente existieren; gibt true zurück, andernfalls false
$a = new math\set([1, 2]);
$b = new math\set([3, 4]);
$a->isDisjointWith($b); // true
equals ($mixed $other)
$other Vergleichsmenge als math\set oder array; Pflicht
prüft, ob zwei Mengen identisch sind (A = B); beide Mengen müssen exakt dieselben Elemente enthalten, unabhängig von der Reihenfolge; gibt true zurück, andernfalls false
$a = new math\set([1, 2, 3]);
$b = new math\set([3, 1, 2]);
$a->equals($b); // true