PHP İki Diziler karşılaştır?

3 Cevap php

Ben bir veritabanında iki girdileri karşılaştırmak için çalışıyorum, bu yüzden bir kullanıcı bir değişiklik yaptığında, ben hem veritabanı girdileri alıp kullanıcı nelerin değiştiğini görmek için bunları karşılaştırmak, bu yüzden benzer bir çıkış olurdu:

Kullanıcı $newValue ile $fieldName $originalValue değiştirildi

Ben bu içine baktı ve array_diff geldi ama o bana ihtiyacım çıkış biçimi vermez ettik.

Devam edin ve bu yapar ve güzel olarak geri döndüren bir fonksiyon yazmak önce $mtextFormatDifferenceString, herkes zaten bunu yapar bir çözüm yönünde beni işaret edebilir?

Ben tekerleği yeniden icat etmek istemiyorum ..

3 Cevap

Eğer "$ newValue dolar OriginalValue itibaren" gerektiren bu yana, ben devam edin ve iki satır seçin, Doç dizilerde onları koymak, sonra tuşları ile foreach, eşit değil olanları tasarruf olacaktır. Tür gibi:

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

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

Ben önceden oluşturulmuş tekerleklerin varlığı hakkında soran edildi ama ben çözüm oldukça basit olduğunu hissettim.

>

Eğer gerekli ne biçim tanımlayabilirsiniz, fakat iyi bilinen olmasa da diff algoritması sizin için muhtemelen. PHP diff algorithm için Google ve eminim bazı öneriler bulacaksınız.

Sen array_diff_assoc ile değiştirilen değerleri ($ newValue) almak ve sonra sadece istediğiniz özgün değeri $ OriginalValue ve Anyformat çıktıyı bulmak için anahtarlarını ($ fieldName) kullanabilirsiniz