ホームページ >バックエンド開発 >PHPの問題 >PHPで2次元配列内の特定の部分配列を削除する方法

PHPで2次元配列内の特定の部分配列を削除する方法

PHPz
PHPzオリジナル
2023-04-20 13:51:46752ブラウズ

PHP 開発プロセスにおいて、配列は非常に重要なデータ型であり、大量のデータを簡単に保存および表現できます。場合によっては、2 次元配列から特定の配列を削除する必要がある場合があります。この記事では、この目的を達成するための 2 つの異なる方法を紹介します。

方法 1: array_filter 関数を使用する

array_filter 関数は PHP の組み込み関数であり、配列内の要素をフィルターするために使用されます。この関数を使用すると、2 次元配列から特定の配列を削除できます。具体的な実装は次のとおりです。

function removeArray($arr, $remove)
{
    return array_filter($arr, function ($item) use ($remove) {
        return !in_array($item, $remove);
    });
}

上記のコードでは、removeArray という名前の関数を定義します。この関数は 2 つのパラメータを受け取ります。

  • $arr: 配列が次のとおりである必要があることを示します。二次元配列から削除されます。
  • $remove: 削除する必要がある配列セットを示します。

次に、array_filter 関数を使用して $arr 配列をフィルタリングします。コールバック関数では、in_array 関数を使用して、現在スキャンされている配列を削除する必要があるかどうかを判断します。削除する必要がある場合は false を返し、そうでない場合は true を返します。最後に、フィルター処理された配列が必要な結果になります。

ユースケース:

$data = [
    ['name' => 'Tom', 'age' => 20],
    ['name' => 'Jerry', 'age' => 18],
    ['name' => 'Andy', 'age' => 22],
    ['name' => 'John', 'age' => 25]
];

$remove = [
    ['name' => 'Tom', 'age' => 20],
    ['name' => 'John', 'age' => 25]
];

$result = removeArray($data, $remove);

print_r($result);

出力結果:

Array
(
    [1] => Array
        (
            [name] => Jerry
            [age] => 18
        )

    [2] => Array
        (
            [name] => Andy
            [age] => 22
        )

)

方法 2: array_udiff 関数を使用する

もう 1 つの方法は、array_udiff 関数を使用することです。この関数は配列の差分セットを計算するために使用され、配列を比較して必要な関数を実現するコールバック関数をカスタマイズできます。

具体的な実装は次のとおりです:

function removeArray($arr, $remove)
{
    return array_udiff($arr, $remove, function ($a, $b) {
        return ($a == $b) ? 0 : 1;
    });
}

上記のコードでは、メソッド 1 と同様に、removeArray という名前の関数を定義します。この関数は、$arr と $remove という 2 つのパラメーターを受け取ります。これらはそれぞれ、配列を削除する必要がある配列セットと削除する必要がある配列セットを表します。

array_udiff 関数を使用して $arr 配列と $remove 配列を比較し、カスタム関数を実行し、配列内の要素を比較して結果を返します。

ユースケース:

$data = [
    ['name' => 'Tom', 'age' => 20],
    ['name' => 'Jerry', 'age' => 18],
    ['name' => 'Andy', 'age' => 22],
    ['name' => 'John', 'age' => 25]
];

$remove = [
    ['name' => 'Tom', 'age' => 20],
    ['name' => 'John', 'age' => 25]
];

$result = removeArray($data, $remove);

print_r($result);

出力結果:

Array
(
    [1] => Array
        (
            [name] => Jerry
            [age] => 18
        )

    [2] => Array
        (
            [name] => Andy
            [age] => 22
        )

)

要約すると、2 次元配列から特定の配列を削除するには 2 つの方法があります。つまり、array_filter 関数を使用する方法と、array_filter 関数を使用する方法です。 array_udiff 関数。どちらも一般的に使用される方法であり、どちらを使用するかはニーズによって異なります。

配列内に同じサブ配列が存在する場合、方法 1 (array_filter) はうまく機能しないことに注意してください。これは、PHP では配列を直接比較できず、array_diff_assoc 関数を使用する必要があるためです。

以上がPHPで2次元配列内の特定の部分配列を削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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