array( array('a' => 'b'), array('b' => 'a') ); などの 2 次元配列内の重複するキーと値を削除する必要があります。同じ組み合わせでは、配列 ('a' => 'b') のみが保持されます。
組み合わせと順列は異なることに注意してください。 (a,b) と (b,a) は同じ組み合わせですが、異なる順列です。 ヒント: 1. 2 次元配列を 1 次元配列に変換します。具体的には、2 次元配列のキーと値を結合し、それらをすべて 1 次元配列に格納します。 > 'b')、キーと値を組み合わせて、値を a-b 形式の文字列に変換します。 次に、それを 1 次元配列に格納し、「-」を追加して、後続の比較時に元のキーと値のペアを復元できるようにします。 2. 変換後、最初に繰り返されている文字列を削除します。この例では「b-d」で、2 回繰り返されているので 1 つを削除します。もう一度比較してください。比較の考え方は次のようになります。たとえば、1次元配列に格納されているキー値文字列「a-b」を「b-a」に変換し、存在しない場合は1次元配列内を検索します。 「b-a」の形の文字列の場合、「a-b」の繰り返しの組み合わせがないことを意味し、「a-b」を分割して初期配列の形式で 2 次元配列に格納します。 「b-a」の形の文字列があり、それが文字列「a-b」の後に位置するということは、文字列「a-b」の組み合わせが繰り返し存在することになりますが、それでも分割します。それを配列に 2 次元で格納します。これは、繰り返しの組み合わせ「b-a」が「a-b」の後に配置されているため、文字列「b-a」をループすると、文字列の組み合わせ「a」も含まれる文字列「b-a」が得られます。 -b' ですが、'b-a' の前に 'a-b' がすでに格納されているため、'b-a' は格納されなくなり、繰り返しの組み合わせを削除するという目的が達成されます。繰り返される文字列の位置の比較は、1 次元配列内の対応するキー名を通じて実行されます。 完全なコード: りー |