[PHP] 將陣列中重複的值刪除最好方法 array_flip (移除陣列中重複的值)

使用array_fliparray_unique來的快速
參考連結:http://stackoverflow.com/questions/8321620/array-unique-vs-array-flip
上述網址提供的範例: http://codepad.org/AnpS69yw

用途:
// 使用前的陣列
Array
(
    [0] => 8
    [1] => 9
    [2] => 10
    [3] => 11
    [4] => 10
    [5] => 11
    [6] => 8
    [7] => 9
)
// 使用後的陣列
Array
(
    [6] => 8
    [7] => 9
    [4] => 10
    [5] => 11
)


底下為比較刪除重複值的方式有3種,array_flip快於 array_unique和array_keys 的測試

$test=array();
for($run=0; $run<1000; $run++)
$test[]=rand(0,100);

$time=microtime(true);

for($run=0; $run<100; $run++)
$out=array_unique($test);

$time=microtime(true)-$time;
echo 'Array Unique: '.$time."\n";
//-----------------------------------------------
$time=microtime(true);

for($run=0; $run<100; $run++)
$out=array_keys(array_flip($test));

$time=microtime(true)-$time;
echo 'Keys Flip: '.$time."\n";
//-----------------------------------------------
$time=microtime(true);

for($run=0; $run<100; $run++)
$out=array_flip(array_flip($test));

$time=microtime(true)-$time;
echo 'Flip Flip: '.$time."\n";

結論:
array_unique($test); 
// Array Unique: 1.1829199790955
array_keys(array_flip($test)); 
// Keys Flip: 0.0084578990936279
// 此方法會重新提供一個新的 key 值
array_flip(array_flip($test));
// Flip Flip: 0.0083951950073242

留言

這個網誌中的熱門文章

[MAC] MacBook Air 2012 手動換硬碟

[Linux] 看懂 Linux Memory Usage 記憶體使用率