Thread differenz zwischen zwei arrays (23 answers)
Opened by Gast at 2003-10-22 16:36

betterworld
 2003-10-22 18:37
#66664 #66664
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
[quote=andi,22.10.2003, 16:09]eine erklärung währe wirklich nicht schlecht![/quote]
hab ich befuerchtet ;)

> my %hsh2;

Wir legen einen Hash an, dem ich jetzt (im Ggs zu oeben) mal einen anderen Namen gebe, damit es keine Verwechslungen gibt.

> $hsh2{$_} ++ for @ar2;

In dieser for-Schleife wird fuer jedes Element von @ar2 ein Key im Hash angelegt. Und zwar wird @ar2 durchgelaufen und fuer jedes Element der entsprechende Value vom Hash inkrementiert. Der Value am Ende gibt jeweils die Anzahl an, wie oft der Key in @ar2 vorkommt.
Diese Art der Speicherung ist sinnvoller fuer diesen Zweck, da uns genau das interessiert: Wie oft kommt ein bestimmter String vor.

> my @ar3 = grep {not($hsh2{$_} and $hsh2{$_}--)} @ar1;

Mit grep koennen wir einen Teilarray aus @ar3 herausholen. In geschweiften Klammern steht die Bedingung, ob der Wert genommen wird oder nicht. Und zwar ist die Bedingung, ob der Wert als Key im Hash auftaucht und einen Value ungleich Null hat (denn dann ist $hsh2{$_} wahr) (Edit: dann genau NICHT). Und wenn dies erfuellt ist, wird nebenbei noch der Value dekrementiert. Es kann also passieren, dass er spaeter dann Null ist.\n\n

<!--EDIT|betterworld|1066834074-->

View full thread differenz zwischen zwei arrays