1

Тема: Порівняння двох асоціативних масивів

Вітання всім!
Є метод отримання асоціативного масиву із таблиці бази даних.
Мені потрібно після отримання двох масивів виконати їх порівняння. І якщо хоч один з полів відрізняється, повернути булеве значення, чи числове (кількості неспівпадінь), немає значення.

Отримав, наприклад, таке:
Object {0: "28", 1: "admin", 2: "sent", 3: "user", 4: "incoming", 5: "4en6", 6: "read", 7: "2013-05-26 02:28:04", id: "28", author: "admin", author_room: "sent", recipient: "user", recipient_room: "incoming"…}
 script.js:236
Object {0: "28", 1: "admin", 2: "sent", 3: "user", 4: "incoming", 5: "4en6", 6: "read", 7: "2013-05-26 02:28:04", id: "28", author: "admin", author_room: "sent", recipient: "user", recipient_room: "incoming"…}

Наперед дякую.

2

Re: Порівняння двох асоціативних масивів

Якось так:

function array_equals(arr1, arr2) {            
    if (arr1.size != arr2.size) {
        return false;
    }
    alert(arr2.length);
    for (var i in arr1) {
        if (arr2.hasOwnProperty(i)) {
            if (arr1[i] != arr2[i]) return false;
        } else {
            return false;
        }
    }
    return true;
}
Подякували: koala1

3

Re: Порівняння двох асоціативних масивів

Тільки ось так:

            if (arr1[i] !== arr2[i]) return false;
Подякували: Replace1

4

Re: Порівняння двох асоціативних масивів

А якщо я маю для порівняння не по одному асоціативному масиву, а по непарній/парній(невідомо) кількості наборів асоц. масивів?
Як перебирати?
Мені просто необхідно відслідковувати зміни у таблиці бази даних. Як правильно це зробити?

5

Re: Порівняння двох асоціативних масивів

А для цього є час останньої зміни, тригери, події і т.д.
Тобто БД знає, що її змінили, і саме вона має якось інформувати інших про це.

6

Re: Порівняння двох асоціативних масивів

Ще є серверні мови. Може краще там перевірку робити? =)

7

Re: Порівняння двох асоціативних масивів

Залежно, яка структура бази та які дані пильнуються...
Можна ввести тріггери. Можна створити табличку і писати туди процедуркою історію змін. Можна у деяких таблицях поставити поле changed і оновлювати запис разом із ним. Але однозначно це слід робити на сервері - хоч БД, хоч рушія сайту: менші затрати ресурсів і подальших нервів.

8

Re: Порівняння двох асоціативних масивів

Як це організувати на тригерах?

9

Re: Порівняння двох асоціативних масивів

rozmath написав:

Як це організувати на тригерах?

Для цього треба знати, як і що у вас організовано.

10

Re: Порівняння двох асоціативних масивів

Є база повідомлень такої структури:
Повідомлення
https://dl.dropboxusercontent.com/u/93079663/4.png
Структура
https://dl.dropboxusercontent.com/u/93079663/7.png
Користувачі
https://dl.dropboxusercontent.com/u/93079663/5.png

11

Re: Порівняння двох асоціативних масивів

То чому недостатньо порівнювати одне поле date_time (краще на сервері, якщо йде передача кількох повідомлень)?

12

Re: Порівняння двох асоціативних масивів

Перевірка передачі повідомлень - не проблема. Система відстежує нові повідомлення і спрацьовує.
А якщо користувач відмітить повідомлення як прочитане? А якщо це повідомлення одне з перших?
Не можу в повній мірі розібратись із тригером UPDATE. Що писати після SET? Треба створювати нову таблицю змін і в ній відмічати усі зміни?

13

Re: Порівняння двох асоціативних масивів

Прочитайте це, будь ласка.

rozmath написав:

А якщо користувач відмітить повідомлення як прочитане? А якщо це повідомлення одне з перших?

А ваша система (з повною перевіркою всіх полів) спрацює краще?

rozmath написав:

Не можу в повній мірі розібратись із тригером UPDATE. Що писати після SET?

А що про це каже Гугл?

rozmath написав:

Треба створювати нову таблицю змін і в ній відмічати усі зміни?

Раджу Вам почитати щось про бази даних. Особливу увагу зверніть на поняття "перша нормальна форма".