[PHP] 將陣列中重複的值刪除最好方法 array_flip (移除陣列中重複的值)
使用array_flip比array_unique來的快速
參考連結:http://stackoverflow.com/questions/8321620/array-unique-vs-array-flip
上述網址提供的範例: http://codepad.org/AnpS69yw
用途:
底下為比較刪除重複值的方式有3種,array_flip快於 array_unique和array_keys 的測試
參考連結: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
留言
張貼留言