PHPで配列から重複要素を削除する関数はarray_unique()関数とarray_flip()関数とarray_uniqure()関数がありますが、後者の方が前者よりも数倍性能が高いので、以下のみ紹介します。配列要素を削除するには 2 つを繰り返します。
方法は次のとおりです。
コードは次のとおりです | コードをコピー |
$arr = array(…………) ;// 1 万個の要素を含む配列があり、その中に重複した要素があるとします。 |
一体何が起こっているのでしょうか? array_flip() の関数を見てみましょう: array_flip() は、次のように配列の各要素のキーと値を交換するために使用されます:
コードは次のとおりです | コードをコピー |
|
PHP 配列では、異なる要素が同じ値を取ることができますが、次のような異なる要素で同じキー名を使用することはできません。
コードをコピー | |
$arr1 = array("age" => 30, "name" => 'ハッピー ガーデン', "age" => 20); "age" => 2 0 は "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));
いくつかのカスタム関数
コードをコピー | |||||
{ $サイズ = カウント($配列); for($i = 0; $i { $array[$id + $i] = $array[$id + $i + 1]; } unset($array[$size - 1]); } //使用例:
|