ホームページ  >  記事  >  バックエンド開発  >  PHP 配列重複排除の迅速な実装

PHP 配列重複排除の迅速な実装

不言
不言オリジナル
2018-03-29 14:34:461318ブラウズ

この記事では、PHP 配列重複排除の比較的高速な実装を紹介します。必要な方は、この記事の方法を参照してください。

概要

PHPのarray_unique()関数を使用すると、配列を渡し、重複する値を削除して一意の値を持つ配列を返すことができます。この関数はほとんどの場合にうまく機能します。ただし、大きな配列に対して array_unique() 関数を使用しようとすると、実行が遅くなります。

一意の配列を作成するために array_unique() 関数を使用する代わりに、より優れた高速な関数 array_flip() があります。この魔法の関数は、配列内の各要素のキーと値を交換します。キーの値は一意である必要があるため、array_unique() 関数と同じ結果が得られます。

PHP 配列の重複排除をより迅速に実装する方法

/* 创建一个包含重复值的,一共四个元素的数组 */
$array = array('green','blue','orange','blue');
/* 翻转数组,你将会得到唯一键值的数组
array('green'=>0,'blue'=>1,'orange'=>2); */
$array = array_flip($array);
/* 然后再翻转一次,将键和值重新放置,然后得到数组:array(0=>'green',1=>'blue',2=>'orange'); */
$array = array_flip($array);

いくつかの要素を削除しているため、配列は通常のシーケンスのようには見えません。たとえば、array(0=>'A',2=>'B',5=>'C'); を取得できます。場合によっては、これは問題になりませんが、配列キーを番号順に保つ必要がある場合は、1 つまたは 2 つの方法を使用して、キー値の順序が崩れる問題を解決できます。

array_mergeを使用して配列のキーを修復します

array_flipを追加した後の関数は、配列のキー値をソートし、0、1、2などの通常のシーケンスに戻します。 ,3...

$array = array('green','blue','orange','blue');
$array = array_flip($array);
$array = array_flip($array);
/* 使用array_merge()函数修复键值*/
$array = array_merge($array);


2番目の方法、array_keysを使用します

配列キー値を修復するこの方法は、array_merge()関数を使用するよりもわずかに高速であることに注意してください。最後のステップで array_keys() 関数を使用することもできます (この関数は反転された値を返します)。その後、配列の値を反転すると、キーが順番に作成されます。

$array = array('green','blue','orange','blue');
$array = array_flip($array);
/* 跟第一个例子一样,但是现在我们先提取数组的键值 */
$array = array_keys($array);

結論

は、大きな配列で array_unique 関数を使用する場合と比較して、効果的なパフォーマンスの向上があります。

関連する推奨事項:

js での配列重複排除の詳細な例

JavaScript と Python の配列重複排除解析

以上がPHP 配列重複排除の迅速な実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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