最近公司在做乙個專案,需要對爬取到的資料進行去重,方法就是根據資料的id,去除掉id重複的資料。
下面是這個方法的演化過程。
//去重$arr_id = array
();$letvfeedlist = array
();for ($i = 0; $i
< count($arrfeedlist); $i++)
}
從上面的演算法中可以看到,上面的演算法用了兩個陣列,兩個迴圈,所以它的時間複雜度為o(n^2),空間複雜度為o(2n)。上面的演算法,我們可以從in_array()入手,考慮下面的因素。
用陣列的id作陣列下標,來儲存爬取到的資料值。
//去重$tmp_arr = array
();for ($i = 0; $i
< min(count($arrfeedlist),10); $i++)
$arrletvfeedlist = array
();foreach ($tmp_arr
as$key => $value
)
這裡用了兩個迴圈,兩個陣列,時間複雜度是o(2n),空間複雜度是o(2n).
後來又對迴圈進行了優化,變成如下**:
//去重$tmp_arr = array
();$arrletvfeedlist = array
();foreach ($arrfeedlist
as$key => $value
)}
isset是速度要快於for迴圈,以上**是最終版本
陣列去重的優化
使用php的array unique 函式允許你傳遞乙個陣列,然後移除重複的值,返回乙個擁有唯一值的陣列。這個函式大多數情況下都能工作得很好。但是,如果你嘗試在乙個大的陣列裡使用array unique 函式,它會執行地慢一些。有乙個比較好而且更快的函式array flip 來替代使用array u...
php 陣列去重
一維陣列的重複項 使用array unique函式即可,使用例項如下 bb array unique aa print r bb 二維陣列的重複項 對於二維陣列咱們分兩種情況討論,一種是因為某一鍵名的值不能重複,刪除重複項 另一種因為內部的一維陣列不能完全相同,而刪除重複項,下面舉例說明 因為某一鍵...
php 陣列去重
一維陣列的重複項 使用array unique函式即可,使用例項如下 bb array unique aa print r bb 二維陣列的重複項 對於二維陣列咱們分兩種情況討論,一種是因為某一鍵名的值不能重複,刪除重複項 另一種因為內部的一維陣列不能完全相同,而刪除重複項,下面舉例說明 因為某一鍵...