[筆記] PHP的array_diff效能改善

改善array_diff在PHP5.6中效能不佳

PHP有個函數array_diff(),可以做兩個陣列的差集,但是在PHP5.6中,這個函數有有效能上的問題,

在PHP7速度是很快的,在網路上找到一個作法,可以有效的改善這個問題。

function fast_array_diff($a1,$a2){
  return array_flip(array_diff_key(array_flip((array)$a1),array_flip((array)$a2)));
}

原理是先利用array_flip將陣列的key和value直接交換後使用array_diff_key將重複的key(即原先的value)去掉,完成後在使用array_flip換回來,

經由此方法可以大量的節省時間

參考網址:http://qiita.com/basaltan9999/items/caa310f5376fb4934ea8