配列操作のプロセス中に、2 つの配列内の同じ要素を削除する状況が発生することがあります。 PHP でこれを実現するには、いくつかの方法があります。 3 つの異なる方法を以下に説明します。
方法 1: 配列関数 array_diff() を使用する
PHP の array_diff() 関数を使用すると、2 つ以上の配列の差を計算できます。つまり、値が次の新しい配列を返します。最初の配列には出現するが、他の配列には出現しない要素。したがって、array_diff() を使用して、2 つの配列内の異なる要素、つまり同じ要素の補数を見つけることができます。
サンプル コード:
$array1 = [1, 2, 3, 4, 5]; $array2 = [3, 5, 7, 9, 11]; $result = array_merge(array_diff($array1, $array2), array_diff($array2, $array1)); print_r($result);
出力結果:
Array ( [0] => 1 [1] => 2 [2] => 4 [3] => 7 [4] => 9 [5] => 11 )
上記のコードは、まず array_diff() 関数を使用して 2 つの入力配列の補数を見つけ、次にそれらをマージします。新しい配列、つまりすべての個別の要素に変換されます。
方法 2: ループ トラバーサルを使用する
ループ トラバーサルを使用して、2 つの配列内の同じ要素を削除することもできます。このメソッドを実装するには、まず配列を反復処理し、次に別の配列で同じ要素を見つけて配列から削除する必要があります。
サンプル コード:
$array1 = [1, 2, 3, 4, 5]; $array2 = [3, 5, 7, 9, 11]; foreach ($array1 as $key => $value) { if (in_array($value, $array2)) { unset($array1[$key]); unset($array2[array_search($value, $array2)]); } } $result = array_merge($array1, $array2); print_r($result);
出力結果:
Array ( [0] => 1 [1] => 2 [2] => 4 [3] => 7 [4] => 9 [5] => 11 )
上記のコードは、まず $array1 内の要素を走査し、次に $array2 内の同じ要素を見つけて移動し、削除します。最後に、2 つの配列を新しい配列にマージします。
方法 3: 配列関数 array_intersect() を使用する
もう 1 つの方法は、PHP の array_intersect() 関数を使用することです。この関数は、2 つ以上の配列の共通部分、つまりすべての配列の共通部分を返します。配列に要素を入力します。上記の最初の方法と同様に、このメソッドも 2 つの配列内で同じ要素を見つけて、それらを新しい配列に結合します。
サンプル コード:
$array1 = [1, 2, 3, 4, 5]; $array2 = [3, 5, 7, 9, 11]; $result = array_intersect($array1, $array2); print_r($result);
出力結果:
Array ( [2] => 3 [4] => 5 )
上記のコードは、array_intersect() 関数を直接使用して、$array1 と $array2 内の同じ要素を検索します。 、3と5。
これらの方法の中で、array_diff() を使用したコードは、すべてのタスクを一度に完了できるため、最も簡潔で効率的です。ループトラバーサルを使用する方法はシンプルで理解しやすいですが、少し複雑で時間がかかる場合もあります。最後に、array_intersect() メソッドを使用するときに注意すべき点があります。このメソッドは 2 つの配列の差分ではなく、同じ要素のみを返すため、すべてのケースに適しているわけではありません。
以上がPHPで2つの配列から同一の値を削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。