Сравнение ассоциативных массивов

Анатолий

Новичок
Сравнение ассоциативных массивов

Доброго времени суток!

Есть 3 массива.
1) Массив A
PHP:
Array
(
    [29] => 654654654
    [32] => 654
    [38] => 40
    [58] => 40
    [57] => 20
    [59] => 20
    [25] => 100
    [49] => 234
    [60] => 20
    [64] => 500
)
2) Массив B
PHP:
Array
(
    [25] => Array
        (
            [25] => 100
            [32] => 654
            [58] => 40
            [57] => 20
            [59] => 20
            [64] => 500
            [29] => 654654654
            [38] => 40
            [49] => 234
            [60] => 20
        )
        
        [26] => Array
        (
            [25] => 0
            [32] => 6
            [58] => 40
            [57] => 20
            [59] => 20
            [64] => 500
            [29] => 555
            [38] => 40
            [49] => 234
            [60] => 534        )


)
3) Массив C
Array
(
[29] => varchar
[32] => float
[38] => int
[58] => int
[57] => int
[59] => int
[25] => float
[49] => float
[60] => int
[64] => float
)
Итак, массив А, так сказать эталонный, нужно искать все совпадения с этим массивом элементов массива B.
Массив C, определяет способ сравнения, т.е.
varchar - полное совпадение
int - полное совпадение
float - попадание в некий интервал, например, -20% / +20%

Простое сравнени массивов A и B, без участия массива С, у меня получилось с помощью функции array_diff_assoc(array_A, array_B).

А вот "пользовательское" сравнение, с учетом третьей таблицы, не получается. Пробовал с помощью array_udiff_uassoc().
И никак... ребята, помогите пожалуйста!
 

partizan

Новичок
Тоесть Вы надеетесь, что существует стандартная ф-я в пхп:
array_anatoliy_diff_assoc(A,B,C), которая делает все именно так как Вам нужно?
 

Анатолий

Новичок
partizan
Нет, на это я не надеюсь.
Но я знаю, что есть функция array_udiff_uassoc ( array array1, array array2 [, array ..., callback data_compare_func, callback key_compare_func])

Но с ее помощью у меня ничего не получилось.

Неужели при данной постановке задачи остается только цикл?
 

HraKK

Мудак
Команда форума
Замечание: Пожалуйста, обратите внимание, что эта функция обрабатывает только одно измерение многомерного массива.
 

Анатолий

Новичок
HraKK
partizan

Все, понял...
Тут еще с одним человеком посоветовался - в общем буду делать "ручками", в цикле.

Всем спасибо!
 

HraKK

Мудак
Команда форума
Не за что.
Но мне кажется что немного изменив логику ты можешь прийти к нужному результату с помощью array_udiff_uassoc
 

Анатолий

Новичок
Провел тесты по сравнению без участия третьего массива. И получилось, что
функция array_diff_assoc(array_A, array_B) работает всего лишь на 0,0393980979920 сек. быстрее чем ручной перебор.
:)
 
Сверху