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

PHPで2次元配列内の同じ要素を削除する方法

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

2 次元配列内の同一の要素を削除することは、PHP では非常に一般的なタスクです。多くの場合、削除を実行する前に、どの要素が同一であるかを判断するための複雑な計算が必要になります。幸いなことに、PHP には、そのようなタスクの完了を支援する便利な関数がいくつか用意されています。この記事では、PHP の 2 次元配列内の同一の要素を削除するのに役立つ関数とテクニックをいくつか紹介します。

  1. array_map 関数と array_unique 関数の使用

array_map 関数は、配列の各要素に関数を適用し、新しい配列を返します。 array_map 関数と array_unique 関数を使用して、2 次元配列内の同一の要素を削除できます。まず、array_map 関数を使用して 2D 配列内のすべての値を抽出します。次に、array_unique 関数を使用して、この新しい配列内の重複した値を削除します。最後に、array_map 関数を使用して、抽出された値を元の 2D 配列の形式に再マップします。

function removeDuplicates($arr) {
    $flatten = array_map('array_values', $arr); 
    $unique_values = array_map('unserialize', array_unique(array_map('serialize', $flatten))); 
    return array_map('array_combine', array_keys($arr), array_values($unique_values));
}

この関数は次のように機能します。

最初に array_map 関数を使用して、2 次元配列を 1 次元配列に変換します。この関数は新しい配列を返します。各要素は小さな配列内のすべての値を表し、これらの値は大きな配列にカプセル化されます。

array_unique 関数は、$ flatten 配列から重複する値を削除し、存在する場合はすべての数値キーのインデックスを再作成します。

その後、インデックスがリセットされていることがわかりました。そのため、値のシリアル化を解除し、インデックスを再作成し、array_combine 関数を使用して元のキーと値のペアにマップし直します。

  1. foreach を使用して配列を走査する

foreach を使用して配列を走査し、同じ要素を削除するには、まず連想配列を走査して作成する必要があります。すべての値を取得したら、array_unique 関数を使用して配列内の重複した値を削除できます。最後に、foreach ループを使用して値を繰り返しマッピングできます。

function removeDuplicates($arr) {
    $new_arr = array();
    foreach ($arr as $key => $value) {
        $new_arr[$key] = serialize($value);
    }
    $unique_arr = array_unique($new_arr);
    foreach ($unique_arr as $key => $value) {
        $unique_arr[$key] = unserialize($value);
    }
    return $unique_arr;
}

このコードは配列を反復処理し、キーとシリアル化された配列値を $new_arr 連想配列に追加します。次に、array_unique 関数を使用して重複した要素を削除します。最後に、再度 foreach を使用して配列を逆シリアル化し、インデックスを再描画します。

  1. 最初の値とは異なる方法

3 番目の方法は、最初の 2 つの方法とは異なります。すべての要素をループしますが、最初の値のみが保持されます。同様に、foreach ループを使用して配列を反復処理できます。重複しない値の場合は $unique_arr 配列に追加します。それ以外の場合は要素を単純にスキップします。

function removeDuplicates($arr) {
    $unique_arr = array();
    foreach ($arr as $key => $value) {
        if (!in_array($value, $unique_arr)) {
            $unique_arr[$key] = $value;
        }
    }
    return $unique_arr;
}

この関数は、すべての配列要素を反復処理し、in_array() 関数を使用して、要素が $unique_arr 配列に追加されているかどうかを確認します。要素が見つからない場合は、配列に追加されます。この関数は、すべての 同一要素が削除された配列 を返します。

array_map 関数を使用している場合でも、foreach 関数を使用している場合でも、これらのヒントを参考にすると、PHP の 2D 配列内の同一の要素を簡単に削除できます。 PHP で配列をより効率的に操作できるように、これらの関数を理解して使用することを忘れないでください。

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

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