streng verwenden;
utf8 verwenden;
fa öffnen, „a.txt“ oder „kann a nicht öffnen“;
fb öffnen, „b.txt“ oder „b kann nicht geöffnet werden“;
chomp (mein @A =) ;
chomp (mein @B =) ;
schließen a; schließen b;
mein (@everyone, @AHasBNot, @BHasANot, %count);
$count{A}{$_}=1 für jedes @A;
$count{B}{$_}=1 für jedes @B;
In diesem Code können wir mithilfe einer Schleife und einer Hash-Tabelle die Liste der Schlüssel durchlaufen und dann den Zähler um den Wert des angegebenen Schlüssels erhöhen. Dieser Code verwendet zwei Hash-Tabellen (A und B) und iteriert über deren Schlüssel. Mithilfe eines Zählers (C) und einer foreach-Anweisung in einer Schleife können wir dann den Zählerwert um den Wert des angegebenen Schlüssels erhöhen.
@Jeder hat = grep { $count{C}{$_} == 2 } Schlüssel %{$count{C}} bedeutet Schlüssel, deren Wert gemäß der Hash-Tabelle $count{C} gleich 2 ist, Filter sie aus und speichere sie im @everyone-Array. Diese Anweisung wird verwendet, um die Hash-Tabelle zu filtern und nur Elemente beizubehalten, die die Bedingungen erfüllen.
foreach (@A, @B) { $count{A}{$_}++; $count{B}{$_}++; }
@A hat B? Dieser Code verwendet die grep-Funktion und die Sortierfunktion der Perl-Sprache, um Elemente, die nur einmal im Wert vorkommen, der dem A-Schlüssel entspricht, aus dem Hash-Array %count auszuwählen und sie in alphabetischer Reihenfolge zu sortieren.
In diesem Code verwenden wir die Funktion „grep“ in der Perl-Sprache, um Elemente herauszufiltern, die einmal in Array B vorkommen, sich aber nicht in Array A befinden. Die spezifische Implementierung besteht darin, jedes Element im B-Array zu durchlaufen und die Hash-Tabelle „%count“ zu verwenden, um die Anzahl des Vorkommens jedes Elements aufzuzeichnen. Abschließend sortieren wir das B-Array und filtern dann mit der Funktion „grep“ die Elemente heraus, die die Bedingungen erfüllen. Abschließend geben wir die gefilterten Ergebnisse als Array zurück.
print("Common: @Jeder hat es$/A-Only: @Nur A hat es$/B-Only: @Nur B hat es");
$a=[
["sbnumber" => "0001-00001", "name" => "心安园"],
["sbnumber" => "0001-00002", "name" => "Zhongzhengyuan"],
["sbnumber" => "0001-00003", "name" => "Pragmatic Garden"]
["sbnumber" => "0001-00004", "name" => "Service Court"],
{ „sbnumber“: „0001-00005“, „name“: „Zhang San“ }
];
$b=[
["sbnumber" => "0001-00001", "name" => "心安园"],
["sbnumber" => "0001-00002", "name" => "Zhongzhengyuan"],
["sbnumber" => "0001-00003", "name" => "Pragmatic Garden"]
["sbnumber" => "0001-00004", "name" => "Service Garden"],
{"sbnumber": "0001-00007", "name": "李思"}
];
$cmp=function($av, $bv){
$r ist das Ergebnis, das durch den Vergleich von $av['sbnumber'] und $bv['sbnumber'] erhalten wird.
return $r===0 ? strcmp($av['name'],$bv['name']) : $r;
};
Sie können den folgenden Code verwenden, um die Werte im Array $a abzurufen, die sich vom Array $b unterscheiden, und sie im Array $c zu speichern: $c = array_values(array_udiff($a, $b, $cmp));
$d=array_udiff($b, $a, $cmp);
foreach($d as &$dv) $c[]=$dv;
unset($d);
var_dump($c);array(2) {
[0]=> array(2) { ["sbnumber"]=> string(15) "0001-00005" ["name"]=> string(6) "Zhang San" }
[1]=> array(2) { ["sbnumber"]=> string(15) "0001-00007" ["name"]=> string(6) "李思" }
Um zwei Differenzsätze zu vergleichen und die Ergebnisse zusammenzuführen, müssen Sie benutzerdefinierte Regeln zum Vergleichen von Inhalten verwenden. Anhand unterschiedlicher Inhalte (z. B. Namen) können wir die Unterschiede zwischen Datensätzen ermitteln und diese so vergleichen.
Das obige ist der detaillierte Inhalt vonSchreiben Sie ein Perl-Programm, um den Schnittpunkt und die Differenz von Mengen zu berechnen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!