Сравнивать array в php

У меня есть эти два array, который я нуждаюсь в том, чтобы сравнить, чтобы удалять различия.

Array1, что равняется всему тому, что есть в mysql

Array(
    [0] => Array
        (
            [id] => 133
            [que] => Codigo
            [idcosa] => 9
            [1] => 36
            [2] => 40
            [3] => verde
            [4] => 
            [5] => 
            [6] => 
            [7] => 
            [8] => 
            [9] => 
            [10] => 
        )

    [1] => Array
        (
            [id] => 134
            [que] => Codigo
            [idcosa] => 9
            [1] => 37
            [2] => 37
            [3] => borrar
            [4] => 
            [5] => 
            [6] => 
            [7] => 
            [8] => 
            [9] => 
            [10] => 
        )

    [2] => Array
        (
            [id] => 135
            [que] => Codigo
            [idcosa] => 9
            [1] => 36
            [2] => 37
            [3] => colao
            [4] => 
            [5] => 
            [6] => 
            [7] => 
            [8] => 
            [9] => 
            [10] => 
        )

    [3] => Array
        (
            [id] => 136
            [que] => Codigo
            [idcosa] => 9
            [1] => 36
            [2] => 70
            [3] => Gris marengo
            [4] => 
            [5] => 
            [6] => 
            [7] => 
            [8] => 
            [9] => 
            [10] => 
        )

)

Array2, что равняется тому, что у меня есть картезианского продукта формуляра

Array (
    [0] => Array
        (
            [0] => 133
            [id] => 133
            [1] => 36
            [que] => Codigo
            [2] => 40
            [idcosa] => 9
            [3] => verde
            [4] => 
            [5] => 
            [6] => 
            [7] => 
            [8] => 
            [9] => 
            [10] => 
            [11] => 
            [12] => 
        )

    [1] => Array
        (
            [0] => 135
            [id] => 135
            [1] => 36
            [que] => Codigo
            [2] => 37
            [idcosa] => 9
            [3] => colao
            [4] => 
            [5] => 
            [6] => 
            [7] => 
            [8] => 
            [9] => 
            [10] => 
            [11] => 
            [12] => 
        )

    [2] => Array
        (
            [0] => 136
            [id] => 136
            [1] => 36
            [que] => Codigo
            [2] => 70
            [idcosa] => 9
            [3] => Gris marengo
            [4] => 
            [5] => 
            [6] => 
            [7] => 
            [8] => 
            [9] => 
            [10] => 
            [11] => 
            [12] => 
        )

)

Он навязывает из-за которого я вижу картезианский продукт, мне новое поле в array, который является [0], у которых есть то же число, что [пойдите]

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

[1] => Array
    (
        [id] => 134
        [que] => Codigo
        [idcosa] => 9
        [1] => 37
        [2] => 37
        [3] => borrar
        [4] => 
        [5] => 
        [6] => 
        [7] => 
        [8] => 
        [9] => 
        [10] => 
    ) 

Но по какому-то странному разуму он не дает это мне и говорит мне, что результат сравнительной - 0 или ошибочный код.

Я сравниваю с этим кодом $Diferencia = array_diff_assoc($array1,$array2); и также я попытался с array_diff в сухие периоды, смотря Веб php, если есть какой-то другой comparador, не видел больше ничто (хороший есть некоторые, но я думаю, что они не вставляют меня) есть какой-то другой способ это делать? или: у меня есть что-то плохо, что он не узнал?

array_diff_assoc он бросает меня как оказанный это:

Array (
        [3] => Array
            (
                [id] => 136
                [que] => Codigo
                [idcosa] => 9
                [1] => 36
                [2] => 70
                [3] => Gris marengo
                [4] => 
                [5] => 
                [6] => 
                [7] => 
                [8] => 
                [9] => 
                [10] => 
            )

    )

Но если вы обращаете внимание этот, пойдите будь как в 1, так и в 2. Возможно будьте глупостью, но он приносит меня из головы и я это не вижу, посмотрим кто-то, кто знал бы больше, чем я php, видит, где у меня есть конфликт :) тысячу благодаря всем заранее.

2
задан 09.01.2017, 23:01
0 ответов

Ты мог бы использовать array_udiff.

Так например:

<?php

    $result = array_udiff($arr1, $arr2, function($a, $b) {

        // Si es igual
        if ($a['id'] == $b['id']) {
            return 0;
        }
        return -1;
    });

    print_r($result);
?>

Результат:

Array
(
    [1] => Array
        (
            [id] => 134
            [que] => Codigo
            [idcosa] => 9
            [1] => 37
            [2] => 37
            [3] => borrar
            [4] => 
            [5] => 
            [6] => 
            [7] => 
            [8] => 
            [9] => 
            [10] => 
        )

)

Demo

2
ответ дан 03.12.2019, 17:47
  • 1
    Гениальный, функционируй совершенно :) тысячи спасибо –  10.01.2017, 19:15