2011-07-03 33 views
3

我有兩個表,我想比較兩個使用array_diff的特定列。一列有超過10,000個條目,其他列最多有25個條目。是否將兩列讀入數組,並使用array_difference是比較它們的好方法,還是會太慢?array_diff是一個很好的方式來比較10000個條目的列嗎?

+1

當你說 「表」,你的意思是數據庫表?如果是這樣,爲什麼不讓數據庫服務器工作而不是'array_diff'? –

+0

,因爲我想比較放入某個表的新列... – Aditii

+1

您仍然可以使用['INSERT ... SELECT'](http://dev.mysql.com/doc/refman/5.0 /en/insert-select.html)語句。 –

回答

0

如果您有2個表格,那麼我假設這些表格來自數據庫。你最好寫一個SQL查詢來做到這一點加入/差異,讓剛剛DB處理這個

+0

我想讓PHP來做到這一點。我創建了一個列表,比較列和比問問用戶如果把特殊記錄在Db或不......與DB不可能..作爲批准和所有需要PHP執行 – Aditii

+1

你可以得到直接從數據庫只有不同的記錄 - 這種方式,你不必得到成千上萬的記錄到應用程序層 –

+0

其實我有歌曲主表和新專輯表..現在我想批准專輯表列表要麼放入歌曲郵件表或不。爲此提取數組中的兩列並且要求moderater批准。請告訴我,如果有任何其他解決方案使用Db查詢。給我那個問題。 – Aditii

0

希望this answer解決您的問題,

已經遇到了完全一樣的 的問題,我真的很希望爲 這裏回答。

所以,我必須找到它周圍 我自己的方式,並與下面的醜陋 雜牌是爲我工作有大約50,000元素的數組 上來。它 是基於你的觀察 array_intersect的作品,但array_diff 沒有。

遲早這也將 溢出的資源限制,在 這種情況下,有必要 塊陣列和處理小 位。當我們來到 時,我們將穿越那座橋。

代碼:

function new_array_diff($arraya, $arrayb) 
    { 
    $intersection = array_intersect($arraya, $arrayb); 
    foreach($arraya as $keya => $valuea) 
     { 
      if (!isset($intersection[$keya])) 
       { 
       $diff[$keya] = $valuea; 
       } 
      } 
     return $diff;  
    } 
+0

我希望array_intersact可能不會減慢進程..對於50k條目 – Aditii

相關問題