web-dev-qa-db-ja.com

PHP多次元配列から重複する値を削除する

array_unique()を使用して、phpの単一の多次元配列から重複するエントリを削除できます。多次元配列で使用することはできますか?それは私のために働いていません!

配列は次のようになります

Array (
    [0] => Array ( [0] => 1001 [1] => john [2] => example )
    [1] => Array ( [0] => 1002 [1] => test [2] => dreamz )
    [2] => Array ( [0] => 1001 [1] => john [2] => example )
    [3] => Array ( [0] => 1001 [1] => example [2] => john )
    [4] => Array ( [0] => 1001 [1] => john [2] => example )
)

誰でも私を助けてください...

13
Aadi

array_unique ページに対するユーザーのコメントは、これにいくらかの光を当てています。あなたはおそらくそれらのコメントの中にいくつかの隠された宝石を見つけるでしょう-それは非常に便利なドキュメントです。

簡単なブラウザで、多次元配列から重複を削除するために次のことが明らかになりました。

<?php
function super_unique($array)
{
  $result = array_map("unserialize", array_unique(array_map("serialize", $array)));

  foreach ($result as $key => $value)
  {
    if ( is_array($value) )
    {
      $result[$key] = super_unique($value);
    }
  }

  return $result;
}
?>
39
Russell Dias

サブ配列を(serialize()を介して)新しい配列にシリアル化し、その上でarray_unique()を実行して、結果の配列のセットをシリアル化解除することができます。

4
Amber