ホームページ  >  記事  >  php教程  >  PHP配列内の重複値をフィルタリングして除外する実装コード

PHP配列内の重複値をフィルタリングして除外する実装コード

WBOY
WBOYオリジナル
2016-06-13 12:06:531159ブラウズ

复制代码代码如下:


$arrF = array();
$arrS = array();
$intTotal = 100;
$intRand = 10;
for($i=0; $i <$intTotal; $i )
{
$arrF[] = rand(1, $intRand);
$arrS[] = rand(1, $intRand);
}
$arrT = array_merge($arrF, $arrS);
$arrRF = array();
$intStart = 時間();
foreach($arrT as $v)
{
if(in_array($v, $arrRF))
{
続行;
}
else
{
$arrRF[] = $v;
}
}
$intEnd = time();
$intTime = $intEnd-$intStart;
echo "続行すると、時間を費やす:$intTime
";
$intStart1 = 時間();
$arrRS = array_unique($arrT);
$intEnd2 = 時間();
$intTime2 = $intEnd2-$intStart1;
echo "array_unique 関数を使用して、時間を費やす:($intTime2)";
エコー "

"; <br>print_r($arrT); <br>print_r($arrRF); <br>print_r($arrRS); <br>エコー "
";
?>


$intTotal がより小さい場合 (例: 1000 以内)、$intRand の値は結果に基本的に影響せず、両方の実行時間に差はありません。 10000 より大きい場合、$intRand が値 100 を取得する場合、array_unique の使用効率が各サイクルの判断より高いと判断され、$intRand = 10、両方の実行時間が一致します。

当数グループの容量はかなり大きくなります (具体的には、詳細な調査は行っておりませんが、この値は後で確認できます)。 $intRand が増加するにつれて、array_unique の表現がより良くなるように、私たちは $intTotal/$intRand とこの比の値を使用しません。これは、感覚的には比例的な変化ではなく、基本的には比の値が大きくなるほど、array_unique の表現がより良くなるからです。 🎜>
上で述べたように、数組が重くなるときは、array_unique、数組が大きくないときの両方の効率などを使用して構築しますが、array_unique は当然承認された代数の子を使用して良い実行を行い、数組の容量を超えます今度は、関数の表现もっと良い、何不用ですか?
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。