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

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

PHPz
PHPzオリジナル
2023-04-18 10:26:08530ブラウズ

PHP では、2 次元配列から複数の配列を削除する必要がある場合があります。この要件は比較的一般的であり、たとえば、特定のデータを無視したり、元のデータ セットから要件を満たさないデータを除外したりする必要があります。この記事では、PHP 組み込み関数とカスタム関数を使用して、2 次元配列内の一部の配列を削除する方法を紹介します。

1. PHP 組み込み関数 array_filter() は、2 次元配列内の複数の配列を削除します

PHP 組み込み関数 array_filter() は、配列内の特定の要素をフィルターで除外し、新しいアレイ。 2 次元配列内の複数の配列を削除する場合、この関数を使用してそれを実現できます。以下に例を示します。

$array = [
    ['id' => 1, 'name' => 'Alice', 'gender' => 'female'],
    ['id' => 2, 'name' => 'Bob', 'gender' => 'male'],
    ['id' => 3, 'name' => 'Charlie', 'gender' => 'male'],
    ['id' => 4, 'name' => 'David', 'gender' => 'male']
];

$exclude_ids = [2, 3];

$new_array = array_filter($array, function($item) use ($exclude_ids) {
    return !in_array($item['id'], $exclude_ids);
});

print_r($new_array);

この例では、4 つのサブ配列を含む 2 次元配列 $array があり、そこから ID 2 と 3 のサブ配列を削除したいと考えています。削除する必要がある ID 値を含む $exclude_ids 配列を定義します。次に、array_filter() 関数を使用して、それをクロージャー関数に渡します。この関数は、サブ配列の 'id' 値が $exclude_ids 配列内にあるかどうかを確認し、存在する場合は false を返し、そうでない場合は true を返します。さらに、クロージャ関数が $exclude_ids 配列にアクセスできるように use ステートメントも使用します。最後に、2 と 3 以外の 'id' 値を持つ部分配列のみを含む新しい配列を取得します。

2. 2 次元配列内の複数の配列を削除するカスタム関数

組み込み関数を使用することに加えて、2 次元配列内の複数の配列を削除する独自の関数を作成することもできます。次元配列。これにより、削除方法と条件をより柔軟に制御できるようになります。以下に例を示します。

function exclude_subarrays($array, $condition) {
    $new_array = [];
    foreach($array as $key => $subarray) {
        $should_exclude = true;
        foreach($condition as $k => $v) {
            if($subarray[$k] !== $v) {
                $should_exclude = false;
                break;
            }
        }
        if(!$should_exclude) {
            $new_array[] = $subarray;
        }
    }
    return $new_array;
}

$array = [
    ['id' => 1, 'name' => 'Alice', 'gender' => 'female'],
    ['id' => 2, 'name' => 'Bob', 'gender' => 'male'],
    ['id' => 3, 'name' => 'Charlie', 'gender' => 'male'],
    ['id' => 4, 'name' => 'David', 'gender' => 'male']
];

$exclude_condition = ['id' => 2, 'gender' => 'male'];

$new_array = exclude_subarrays($array, $exclude_condition);

print_r($new_array);

この例では、4 つのサブ配列を含む 2 次元配列 $array もあり、ID 2、性別が男性のサブ配列を削除する必要があります。このタスクを達成するために、exclude_subarrays という関数を作成しました。この関数は、元の配列 $array と、削除条件を含む連想配列 $condition の 2 つのパラメータを受け取ります。関数内で、空の新しい配列 $new_array を作成し、foreach を使用して元の配列内のすべてのサブ配列を走査します。各サブ配列に対して、初期化時に true に設定される $Should_exclude フラグを定義します。また、foreach を使用して、条件 $condition 内の各キーと値のペアを走査して削除します。キーと値のペアごとに、現在の部分配列内の対応するキーが必要な値と等しいかどうかを確認します。等しい場合は、このサブ配列を削除する必要があることを意味するため、$Should_exclude フラグを false に設定し、ループから抜け出します。それ以外の場合は、次のキーと値のペアのチェックを続けます。 $condition 配列全体のチェックが完了した後、$Should_exclude がまだ true であれば、現在のサブ配列を削除する必要がないことを意味するため、$new_array 配列に追加されます。最後に、新しい配列を返すだけです。

概要

上記は、2 次元配列内の複数の配列を削除する 2 つの方法です。組み込み関数 array_filter() は短いですが、カスタム関数はより柔軟であり、特定の状況ではより適切な場合があります。使用する際には、実際の状況に応じて柔軟に選択する必要があります。

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

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