PHP сравнить два массива? - PullRequest
2 голосов
/ 16 марта 2010

Я пытаюсь сравнить две записи в базе данных, поэтому, когда пользователь вносит изменения, я могу выбрать обе записи базы данных и сравнить их, чтобы увидеть, что изменил пользователь, поэтому у меня будет вывод, похожий на:

Пользователь изменил $fieldName с $originalValue на $newValue

Я изучил это и наткнулся на array_diff, но он не дает мне нужный формат вывода.

Прежде чем я начну писать функцию, которая делает это, и возвращает ее как хороший $mtextFormatDifferenceString, кто-нибудь может указать мне в направлении решения, которое уже делает это?

Я не хочу заново изобретать колесо ..

Ответы [ 3 ]

1 голос
/ 16 марта 2010

Поскольку вам требуется «от $ originalValue до $ newValue», я бы выбрал две строки, поместил их в ассоциированные массивы, а затем перебрал ключи, сохранив те, которые не равны. Вид как:

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

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

Я понимаю, что вы спрашивали о существовании готовых колес, но я чувствовал, что решение было довольно простым.

?>

0 голосов
/ 16 марта 2010

Вы можете получить измененные значения ($ newValue) с помощью array_diff_assoc, а затем просто использовать ключи ($ fieldName), чтобы найти исходное значение $ originalValue и вывести его в любом формате, который вы хотите

0 голосов
/ 16 марта 2010

Хотя вы не определили, какой формат вам нужен, но хорошо известный алгоритм diff, вероятно, для вас. Google для PHP diff algorithm, и вы найдете некоторые предложения, я уверен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...