方法は次のとおりです:
$arr = array(…………) ;//要素が繰り返される 10,000 個の要素の配列があるとします。
$arr = array_flip(array_flip($arr)); //これにより、重複した要素が削除されます。
具体的に何が起こっているのですか? array_flip() の関数を見てみましょう: array_flip() は、次のように配列の各要素のキーと値を交換するために使用されます:
$arr1 = array ("年齢" => 30, "名前" => "ハッピー ガーデン");
$arr2 = array_flip($arr1); //$arr2 は array(30 => "年齢", "ハッピー ガーデン" => "名前");
PHP 配列では、異なる要素が同じ値を取ることができますが、次のような異なる要素で同じキー名を使用することはできません。
$arr1 = array ("age" => 30, "name" => "ハッピー ガーデン", "age" => 20); "age" => 20 は "age" => 30 を置き換えます。
$arr1 = array ("名前" => "ハッピーパーク", "年齢" => 45);
ここで、$arr1 と $arr2 は等しいです。
したがって、array_flip(array_flip($arr)) が配列内の重複要素を削除できる理由がわかります。まず、$arr の値がキー名になります。これは、値がキー名になった後、重複したキー名になり、PHP エンジンは重複したキー名を削除し、最後のキー名のみを保持します。 1つ。 。例:
$arr1 = array ("年齢" => 30, "名前" => "ハッピーガーデン", "年齢" => 20);
$arr1 = array_flip($arr1); //$arr1 は array("ハッピー ガーデン" => "名前", 20 => "年齢");
// $arr1 のキー名と値を復元します:
$arr1 = array_flip($arr1);
上記のコードは、より簡潔に書くことができます: $arr1 = array_flip(array_flip($arr1));
上で配列の重複排除に関する記事を書きましたが、それは1次元配列に限定されます。次の関数は 2 次元配列に使用できます:
コードをコピーします コードは次のとおりです:
関数 array_unique_fb($array2D)
{
foreach ($array2D を $v として)
{
$v = join(",",$v); //次元を削減するには、implode を使用して 1 次元配列をカンマで接続された文字列に変換することもできます
$temp[] = $v;
}
foreach ($temp as $k => $v)$v = join(",",$v); //次元を削減するには、implode を使用して 1 次元配列をカンマで接続された文字列に変換することもできます
{
$temp[$k] =explode(",",$v); //逆アセンブルされた配列を再アセンブルします
}
$temp を返します。 }
配列のキー値を保持したい場合は、次の関数を使用できます:
コードをコピーします コードは次のとおりです:
//二次元配列は重複した値を削除し、キー値を保持します
関数 array_unique_fb($array2D)
{
foreach ($array2D as $k=>$v)
{
$temp[$k] = $v;
}
$temp = array_unique($temp); // 繰り返される文字列、つまり、繰り返される 1 次元配列を削除します
foreach ($temp as $k => $v)
$array=explode(",",$v); // 逆アセンブルされた配列を再アセンブルします{
$temp2[$k]["id"] =$array[0]; $temp2[$k]["litpic"] =$array[1]; $temp2[$k]["タイトル"] =$array[2]; $temp2[$k]["アドレス"] =$array[3]; $temp2[$k]["開始時間"] =$array[4]; $temp2[$k]["終了時間"] =$array[5]; $temp2[$k]["クラスID"] =$array[6]; $temp2[$k]["名前"] =$array[7]; }
$temp2 を返します。 }
多分それです。
2次元配列の重複排除
コードをコピーします コードは次のとおりです:
$arr = 配列(
array('id' => 1,'name' => 'aaa')、
array('id' => 2,'name' => 'bbb')、
array('id' => 3,'name' => 'ccc')、
array('id' => 4,'name' => 'ddd')、
array('id' => 5,'name' => 'ccc')、
array('id' => 6,'name' => 'aaa'),
array('id' => 7,'name' => 'bbb')、
); 関数 assoc_unique(&$arr, $key)
{
$rAr=配列(); for($i=0;$i{
if(!isset($rAr[$arr[$i][$key]]))
$rAr[$arr[$i][$key]]=$arr[$i];
}
}
$arr=配列値($rAr);
}
PHPの組み込み関数を使用する
手順
配列 array_unique (配列 $array)
array_unique() は配列を入力として受け入れ、重複値のない新しい配列を返します。キー名は変更されないことに注意してください。 array_unique() は、まず値を文字列として並べ替え、次に各値の最初に見つかったキーのみを保持し、その後すべてのキーを無視します。これは、ソートされていない配列内で最初に出現した同じ値が保持されるという意味ではありません。
注: (文字列) $elem1 === (文字列) $elem2 の場合に限り、2 つのセルは同じとみなされます。つまり、文字列の表現が同じ場合です。最初のユニットは保持されます。
例1 array_unique() の例
$input = array("a" => "緑", "赤", "b" => "緑", "青", "赤");
$result = array_unique($input);
print_r($result);
?>
上記の例では次のように出力されます:配列
(
[a] => 緑
[0] => 赤
[1] => 青
)
例2 array_unique() と型$input = array(4, "4", "3", 4, 3, "3");
$result = array_unique($input);
var_dump($result);
?>
上記の例では次のように出力されます:配列(2) {
[0] => int(4)
[2] => 文字列(1) "3"
}関連チュートリアル
http://www.bKjia.c0m/phper/php-function/34794.htm