PHP プログラミングでは、特に複数の配列の交差部分を処理する必要がある場合に、2 つの配列の交差部分を削除するという問題に遭遇することがよくあります。この記事では、2 つの配列間の交差部分を削除する簡単で実用的な方法を紹介します。
1. 問題の説明
それぞれ次のような 2 つの配列 $A と $B があるとします:
$A = array(1,2,3,4, 5 ,6);
$B = array(4,5,7,8,9,10);
要件は、$A と $B のすべての要素のみを保持することです。配列の交差部分、つまり結果の配列は次のようになります。
$Result = array(1,2,3,6,7,8,9,10);
それではどうすればよいでしょうか?実装はどうすればよいでしょうか?以下、一つずつご紹介していきます。
2. 方法 1
まず、PHP の array_diff 関数を使用して、配列要素の差分演算を実装できます。コードは次のとおりです:
$ Result = array_merge(array_diff ($A, $B), array_diff($B, $A));
上記のコードでは、array_diff($A, $B) は、$A 内の項目をフィルターで除外することを意味します。 $B には含まれない配列 配列内の要素; array_diff($B, $A) は、$B 配列にはあるが $A 配列には含まれない要素をフィルターで除外することを意味します。次に、array_merge 関数を使用して、2 つの結果の配列を結合します。この方法は単純に見えますが、実際には、次の点に示すように堅牢ではありません。
したがって、これらの問題をより適切に回避するには、より堅牢な方法を使用して配列要素の交差部分を削除する必要があります。
3. 方法 2
次に、配列内の各要素をループし、その過程で重複排除とフィルター操作を実行できます。コードは次のとおりです。
$Result = array();
foreach($A as $value){
if(!in_array($value, $B)){ $Result[] = $value; }
}
foreach( $B as $value){
if(!in_array($value, $Result)){ $Result[] = $value; }
}
上記のコードでは、最初に最終結果の配列を表す空の配列 $Result を定義します。次に、2 つの foreach ループを使用して、$A と $B の各要素を反復処理します。プロセス中に、in_array 関数を使用して、現在の要素が別の配列に存在するかどうか ($B に存在するかどうかなど) を判断します。以前に表示されていない場合は、$Result に追加されます。最終的な $Result 配列は、2 つの配列内のすべての要素を結合したものです。
このメソッドを使用すると、次の利点があります。
4. 概要
この記事では、PHP で配列の交差の問題に対処する 2 つの方法、array_diff 関数の使用とループ トラバーサル フィルタリングの使用を紹介します。どちらの方法でも正しい結果が得られますが、ループ トラバーサルを使用する方法はより堅牢で、より多くのエッジ ケースを処理できるため、学習する価値があります。
以上がPHPで2つの配列の交差部分を削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。