ホームページ >バックエンド開発 >PHPの問題 >PHPの2つの配列内の同じ要素を削除する

PHPの2つの配列内の同じ要素を削除する

王林
王林オリジナル
2023-05-19 19:29:36611ブラウズ

PHP は、さまざまなデータ処理および管理テクノロジをサポートする人気のあるサーバーサイド開発言語です。その中でも、配列は PHP プログラミングの重要な部分であり、さまざまな複雑なデータ構造や要素のコレクションを表すことができます。いくつかの要素を含む 2 つの配列 A と B があり、関数を実装したいとします。A と B の同じ要素を削除します。つまり、A または B に現れる要素のみを保持し、両方には保持しません。以下では、PHP を使用してこの機能を実現する方法を紹介します。

1. 配列の基本

PHP では、配列は複数の値またはキーと値のペアを格納できる順序付けされたデータ構造であり、各要素は一意の添え字によって識別されます。配列に対する一般的な操作には、追加、削除、走査、並べ替えなどがあります。一般的に使用される配列関数の一部を次に示します:

• array(): 配列変数を定義します;
• array_push(): 1 つ以上の要素を配列の末尾に追加します;
• array_pop (): 配列の末尾から要素を削除;
• array_shift(): 配列の先頭から要素を削除;
• array_unshift(): 配列の先頭に 1 つ以上の要素を追加;
• array_slice(): 配列からサブコレクションを抽出します;
• array_merge(): 2 つ以上の配列を結合します;
• array_splice(): 配列から要素を削除または挿入します。

2. 配列の重複排除

同じ要素を削除する機能を実装する前に、配列内の重複した要素を削除する方法を検討する必要があります。 PHP には、重複排除操作を実装できる組み込み関数 array_unique() が用意されています。この関数の構文は次のとおりです。

array_unique(array $array [, int $sort_flags = SORT_STRING]): array

このうち、$array パラメータは、配列変数を表します。 $sort_flags パラメータは並べ替え方法を示します。同一の値が複数ある場合、重複排除後に最初の値のみが保持され、保持された値の位置は変更されません。以下に例を示します:

$a = array(1, 2, 3, 2, 4, 3);
$b = array_unique($a); // $b = [1, 2, 3, 4]

3. 同じ要素を削除する

配列を複製する方法がわかったので、例を使用して同じ要素を削除する方法を示します。 2 つの配列 A と B があり、その要素は同じ型であり、重複要素の数は不定であるとします。 2 つの配列をパラメーターとして受け取り、1 つの配列にのみ存在する要素を含む配列を返す関数 diff() を実装したいと考えています。つまり、A と B の同じ要素を削除します。

方法 1: array_diff() 関数を使用する

PHP には、2 つ以上の配列間の差分を返すことができる array_diff() 関数が用意されています。この関数の構文は次のとおりです。

array_diff(array $array1, array $array2 [, array $...]): array

この関数によって返される配列は、次のとおりです。 $array1 ではなく、$array2 のすべての要素。複数の配列が指定された場合、返される配列には、次のどの配列にも含まれない要素が含まれます。以下に例を示します:

$a = array(1, 2, 3, 4, 5);
$b = array(4, 5, 6, 7);
$result = array_diff($a, $b); // $result = [1, 2, 3]

この関数の結果を A と B に適用して、1 つの配列にのみ存在する要素を取得できます:

function diff($a, $b) {
    $unique_a = array_unique($a);
    $unique_b = array_unique($b);
    $diff_a = array_diff($unique_a, $unique_b);
    $diff_b = array_diff($unique_b, $unique_a);
    return array_merge($diff_a, $diff_b);
}

$a = array(1, 2, 3, 2, 4, 3);
$b = array(2, 4, 5, 3);
$result = diff($a, $b); // $result = [1, 5]

最初に使用できることがわかります。 array_diff() 関数を使用して 2 つの配列の差分を取得し、その差分をマージします。

方法 2: foreach ループを使用する

組み込み関数を使用することに加えて、2 つの配列を走査することで同じ要素を削除する機能も実現できます。具体的には、まず 2 つの配列の重複を排除し、次に配列の 1 つを反復処理し、その中の各要素について、その要素がもう一方の配列にない場合は、その要素を結果の配列に追加します。以下は例です:

function diff($a, $b) {
    $unique_a = array_unique($a);
    $unique_b = array_unique($b);
    $result = array();
    foreach ($unique_a as $x) {
        if (!in_array($x, $unique_b)) {
            $result[] = $x;
        }
    }
    foreach ($unique_b as $y) {
        if (!in_array($y, $unique_a)) {
            $result[] = $y;
        }
    }
    return $result;
}

$a = array(1, 2, 3, 2, 4, 3);
$b = array(2, 4, 5, 3);
$result = diff($a, $b); // $result = [1, 5]

foreach ループを使用して配列を走査し、各要素に対して in_array() 関数を使用して要素が別の配列に存在するかどうかを確認できることがわかります。そうでない場合は、結果の配列に追加されます。

4. 概要

PHP は強力なプログラミング言語であり、配列はその重要なコンポーネントです。この記事では、組み込み関数の使用や配列の走査など、PHP を使用して 2 つの配列の同じ要素を削除する方法を紹介します。最良の結果を達成するために、実際のニーズに応じてさまざまな方法を選択できます。この記事が、読者が PHP 配列の基本的な使用法を理解するのに役立つことを願っています。

以上がPHPの2つの配列内の同じ要素を削除するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。