21. März 2019

Zweidimensionale Arrays

Wenn wir jetzt also mehrere Personen aus dem vorherigen Beispiel in einer Tabelle zusammenfassen wollen, nehmen wir hierfür ein zweidimensionales Array. Es hört sich super schlimm an, ist aber nichts anders als das eindimensionale, nur dass die Elemente selbst weitere Attribute haben. Wir erstellen ein leeres Array names $allPersons

$allPersons = @()

Sofern nicht noch in der Shell, erstellen wir unsere Person wie im Eintrag „Attribute“ zu sehen.

Jetzt können wir unserem Array die Person hinzufügen.

$allPersons += $person
$allPersons

Obama ist jetzt in unserer Liste. Überschreiben wir also die alte Person und füllen sie mit neuen Daten. Danach wird auch diese hinzugefügt. Aber Halt, was ist hier passiert:

In dem Array wird auf die Variable verwiesen. Darum kann man die Variable nicht wiederverwenden. Nicht in diesem Kontext zumindest. Wenn wir später mit for, foreach und foreach-object arbeiten, wird das funktionieren, da die Variable nur pro Instanz gültig ist.

Erst wenn die Variable nicht mehr existiert, werden ihre Werte „hartgecoded“. Davor verweist der Wert im Array praktisch „live“ noch auf die Werte der Variable.

Remove-Variable -Name Person
$person = "" | Select FirstName,LastName,DateOfBirth

Etc…

Jetzt habe wir die Michelle zweimal drin. Die soll einmal raus. Hier kenne ich keinen einfachen Trick, nur die Möglichkeit eine Spanne zu definieren. Dies geschieht über den Start-Index, gefolgt von zwei Punkten und dem Schluss-Index. Siehe auch:

Spannen in Arrays

In unserem Fall wollen wir entweder das 0. oder das 1. Element weg haben. Also den Index 0, oder den Index 1. Also wollen wir den Index ab 1 bis Ende behalten

[1..“Ende“] was auch immer das Ende ist, denn es könnten ja auch zig tausende sein, oder mehr… und jedesmal zählen? Nein… Wir haben ja im Kapitel über Elemente und Index gelernt, dass man mittel „-1“ ans Ende kommt. Also

$allPersons[1..-1]

Jetzt gilt es noch das alte Array zu überschreiben und alles ist wie es sein sollte.