2012-03-29 6 views
0
<?php 

$array = array('aaa', 'bbb', 'aaa', 'ccc', 'ddd', 'ccc', 'eee'); 

foreach($array as $a){ 
    echo $a; 
} 

foreachにはDISTINCTのように使用できますか?私は各値を繰り返し表示せずに1つだけ表示したいと思います。これにはどのように最善の方法がありますか?foreachのDISTINCT

http://codepad.org/FZQNEBeK

答えて

1

あなたが大規模な配列を持っているとき、実際にarray_unique()はかなり悪いなります。あなたは$uniques = array_flip(array_flip($array))でより良いでしょう。

+0

大きな配列を持つときに 'array_unique()'が悪くなる理由を教えてください。 – Starx

+1

@Starx、私はCでかなり悪いので、[実装をチェックする]ことができます(https://github.com/php/php-src/blob/PHP-5.3/ext/standard/array.c#L2769)あなた自身。しかし、これは私が 'array_unique()'プロセスを理解する方法です:元の配列をコピーする>>そのコピー内のデータをソートする>>コピーからコピーを取り除く>>コピーを返す –

10

使用array_unique()

$array = array('aaa', 'bbb', 'aaa', 'ccc', 'ddd', 'ccc', 'eee'); 
$result = array_unique($array); 
print_r($result); 

Demo