PHP には、配列内の重複要素を削除する関数 array_unique() がありますが、これは最も効率的な方法ではありません。array_flip() 関数を使用すると、array_unique() よりも約 5 倍高速になります。
関数形式:
array array_flip (array trans) //array_flip -- 配列内のキーと値を交換します
メソッドは次のとおりです:
$arr = array(…………);//Assume要素が 10,000 個あり、要素が繰り返される配列です。
$arr = array_flip(array_flip($arr)); //これにより、重複した要素を削除できます。
具体的に何が起こっているのですか? array_flip() の関数を見てみましょう: array_flip() は、次のように配列の各要素のキーと値を交換するために使用されます:
$arr1 = array ("age" => 30, "name" => ; " php 自習ネットワーク");
$arr2 = array_flip($arr1); //$arr2 は array(30 => "年齢", "php 自習ネットワーク" => "名前");
PHP の配列では、異なる要素が同じ値を取ることは許可されますが、同じキー名が異なる要素で使用されることは許可されません。例:
$arr1 = array ("age" => 30, "name" => "php 自習ネットワーク ", "年齢" => 20 は "年齢" => 30 に置き換えられます
$arr1 = array ("name" => self-study network", "age" = > 45);
ここでは $arr1 と $arr2 は等しいです。
これで、array_flip(array_flip($arr)) が配列内の重複要素を削除できる理由がわかります。まず、$arr の値がキー名になります。これは、値がキー名になった後、重複したキー名になり、PHP エンジンは重複したキー名を削除し、最後のキー名のみを保持します。 1つ。 。例:
$arr1 = array ("年齢" => 30, "名前" => "php 自習ネットワーク", "年齢" => 20); //$ arr1 は array("php 自習ネットワーク" => "名前", 20 => "年齢") になります
//$arr1 のキー名と値を復元します:
$arr1 = array_flip($ arr1 );
上記のコードはより簡潔に記述されています: $arr1 = array_flip(array_flip($arr1));