2010-03-16 194 views
2

我想比較數據庫中的兩個條目,所以當用戶進行更改時,我可以獲取兩個數據庫條目並比較它們以查看用戶更改了哪些內容,因此我將得到類似於以下內容的輸出:PHP比較兩個數組?

用戶改變$fieldName$originalValue$newValue

我看着這個和整個array_diff來了,但它並沒有給我的輸出格式,我需要。

在我開始寫一個這樣做的函數並返回它作爲一個很好的$mtextFormatDifferenceString之前,任何人都可以指向我已經做到這一點的解決方案嗎?

我不想重新發明輪子..

+4

而不是在PHP中進行比較,爲什麼不在SQL中進行比較? – dnagirl 2010-03-16 17:10:47

回答

1

既然你需要「從$ originalValue爲$ newValue「,我會繼續並選擇兩行,將它們放在關聯數組中,然後對整個鍵進行foreach,保存那些不相等的。有點像:

$fields = array_keys($row1); 
$changedFields = array(); 

foreach ($fields as $field) { 
    if ($row1[$field] != $row2[$field]) { 
     $changedFields[] = $field; 
    } 
} 

我意識到你問的是預製輪子的存在,但我覺得解決方案非常簡單。

?>

+0

你知道什麼時候你不能看到樹木... 我把你的代碼,並建立在它給我所需的輸出。 謝謝! – Sjwdavies 2010-03-18 08:48:29

+0

我知道這一切太好:)很高興我能幫上忙。 – webbiedave 2010-03-18 14:07:44

0

你雖然沒有定義,你需要什麼樣的格式,但衆所周知diff算法可能是給你的。谷歌的PHP diff algorithm,你會發現一些建議,我相信。

0

你可以得到改變的值($ newValue)以與和array_diff_assoc,然後只用鍵($字段名)發現,原來價值$ originalValue和輸出它anyformat你想