厳密を使用;
utf8を使用します;
fa、「a.txt」を開くか、「a.txt を開けません」;
FB を開くか、「b.txt」を選択するか、「b を開けません」を選択してください;
chomp (私の @A = ) ;
chomp (私の @B = ) ;
aを閉じる; bを閉じる;
私 (@みんな、@AHasBNot、@BHasANot、%count);
@A ごとに$count{A}{$_}=1;
$count{B}{$_}=1 @B ごとに;
このコードでは、ループとハッシュ テーブルを使用して、キーのリストを反復処理し、指定されたキーの値だけカウンターをインクリメントできます。このコードは 2 つのハッシュ テーブル (A と B) を使用し、それらのキーを反復処理します。次に、ループ内でカウンター (C) と foreach ステートメントを使用することで、指定されたキーの値だけカウンター値をインクリメントできます。
@Everyone has it = grep { $count{C}{$_} == 2 } Keys %{$count{C}}; ハッシュ テーブル $count{C} の値が 2 に等しいことを意味しますキーをフィルタリングして除外し、@everyone 配列に保存します。このステートメントは、ハッシュ テーブルをフィルタリングし、条件を満たす要素のみを保持するために使用されます。
foreach (@A, @B) { $count{A}{$_}; $count{B}{$_}; }
@A Yes B No このコードは、Perl 言語の grep 関数と sort 関数を使用して、ハッシュ配列 %count から A キーに対応する値に 1 回だけ出現する要素を選択し、アルファベット順にソートします。
このコードでは、Perl 言語の `grep` 関数を使用して、配列 B には一度出現するが配列 A には出現しない要素をフィルターで除外します。具体的な実装では、B 配列の各要素をループし、ハッシュ テーブル `%count` を使用して各要素の出現数を記録します。最後に、B 配列をソートし、`grep` 関数を使用して条件を満たす要素を除外します。最後に、フィルター処理された結果を配列として返します。
print("共通: @全員が持っています$/A-のみ: @Aのみが持っています$/B-のみ: @Bのみが持っています");
$a=[
["sbnumber" => "0001-00001", "name" => "新安裁判所"],
["sbnumber" => "0001-00002", "name" => "中正源"],
["sbnumber" => "0001-00003", "name" => "プラグマティック ガーデン"]
["sbnumber" => "0001-00004", "name" => "サービスコート"],
{ "sbnumber": "0001-00005", "名前": "張三" }
];
$b=[
["sbnumber" => "0001-00001", "name" => "新安裁判所"],
["sbnumber" => "0001-00002", "name" => "中正源"],
["sbnumber" => "0001-00003", "name" => "プラグマティック ガーデン"]
["sbnumber" => "0001-00004", "name" => "サービスコート"],
{"sbnumber": "0001-00007", "name": "李思"}
];
$cmp=関数($av, $bv){
$r は、$av['sbnumber'] と $bv['sbnumber'] を比較して得られた結果です。
return $r===0 ? strcmp($av['name'],$bv['name']) : $r;
};
次のコードを使用すると、配列 $b とは異なる配列 $a の値を取得し、それらを配列 $c に保存できます: $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]=> 配列(2) { ["sbnumber"]=> 文字列(15) "0001-00005" ["名前"]=> 文字列(6) "張三" }
[1]=> 配列(2) { ["sbnumber"]=> 文字列(15) "0001-00007" ["名前"]=> 文字列(6) "李思" }
2 つの差分セットを比較して結果をマージするには、コンテンツを比較するためのカスタム ルールを使用する必要があります。異なる内容 (名前など) に基づいてレコード間の違いを判断し、レコードを比較できます。
以上が集合の共通部分と差分を計算する Perl プログラムを作成するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。