Как найти другой массив между двумя многомерными массивами в php - PullRequest
0 голосов
/ 26 мая 2020

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

многомерный массив 1 :

$newArray = Array
(
[0] => Array
    (
        [0] => 45521
        [1] => Clothing
        [2] =>  Percent discount
        [3] =>  Get 15% off With Code ABCD15
        [4] =>  2020-05-18
        [5] => 2020-05-31
        [6] => ABCD15
        [7] =>  https://domain[dot]com/AYuANDEqU40
        [8] => Boutique
        [9] => Germany 
    )

[1] => Array
    (
        [0] => 45516
        [1] => Apparel
        [2] =>  Percentage Off
        [3] =>  15% off With Code ABCD15
        [4] =>  2020-05-18
        [5] => 2020-05-31
        [6] => ABCD15
        [7] =>  https://domain[dot]com/AYuANDEqU40
        [8] => Boutique
        [9] => Australia 
    )

[2] => Array
    (
        [0] => 45672
        [1] => Food & Drink
        [2] =>  Free Shipping
        [3] =>  Summer Collection Now. Shop Now!
        [4] =>  2020-05-17
        [5] => 2020-08-01
        [6] => N/A
        [7] =>  https://domain[dot]com/AYuANDEqU40761312
        [8] => Fancy
        [9] => US 
    )

[3] => Array
    (
        [0] => 45866
        [1] => Food & Drink
        [2] =>  Percentage off
        [3] =>  20% Off
        [4] =>  2020-05-17
        [5] => 2026-05-15
        [6] => OFF20
        [7] =>  https://domain[dot]com/AYuANDEqU40780908
        [8] => Biata
        [9] => US 
    )

[4] => Array
    (
        [0] => 45524
        [1] => Health & Wellness
        [2] =>  Other
        [3] =>  Jet's monthly bottle of probiotics. Try it now!
        [4] =>  2020-05-02
        [5] => 2026-05-01
        [6] => N/A
        [7] =>  https://domain[dot]com/AYuANDEqU40758409
        [8] => Jet
        [9] => US 
    )
)
[5] => Array
    (
        [0] => 45524
        [1] => Health & Wellness
        [2] =>  Other
        [3] =>  Jet seasonal probiotics.  No hidden cost.
        [4] =>  2020-05-02
        [5] => 2026-05-01
        [6] => N/A
        [7] =>  https://domain[dot]com/AYuANDEqU40758408
        [8] => Jet
        [9] => US 
    )

многомерный массив 2 :

$oldArray = Array
(
[0] => Array
    (
        [0] => 45521
        [1] => Clothing's
        [2] =>  Percent discount
        [3] =>  Get 15% off With Code ABCD15
        [4] =>  2020-05-18
        [5] => 2020-05-31
        [6] => ABCD15
        [7] =>  https://domain[dot]com/AYuANDEqU40
        [8] => Boutique
        [9] => Germany 
    )

[1] => Array
    (
        [0] => 45516
        [1] => Apparel
        [2] =>  Percentage Off
        [3] =>  15% off With Code ABCD15
        [4] =>  2020-05-18
        [5] => 2020-05-31
        [6] => ABCD15
        [7] =>  https://domain[dot]com/AYuANDEqU40
        [8] => Boutique
        [9] => Australia 
    )

[2] => Array
    (
        [0] => 45672
        [1] => Food & Drink
        [2] =>  Free Shipping
        [3] =>  Summer Collection Now. Shop Now!
        [4] =>  2020-05-17
        [5] => 2020-08-01
        [6] => N/A
        [7] =>  https://domain[dot]com/AYuANDEqU40761312
        [8] => Fancy
        [9] => US 
    )

[3] => Array
    (
        [0] => 45866
        [1] => Food & Drink
        [2] =>  Percentage off
        [3] =>  20% Off
        [4] =>  2020-05-17
        [5] => 2026-05-15
        [6] => OFF20
        [7] =>  https://domain[dot]com/AYuANDEqU40780908
        [8] => Biata
        [9] => US 
    )

[4] => Array
    (
        [0] => 45706
        [1] => Electronic Equipment
        [2] =>  Percentage off
        [3] =>  40% Off-Set Under $200!
        [4] =>  2020-05-17
        [5] => 2026-05-15
        [6] => N/A
        [7] =>  https://domain[dot]com/AYuANDEqU40768379
        [8] => GVM
        [9] => US 
    )
) 

Вы можете легко увидеть, что $newArray имеет одну другую array([4]) из $oldArray, одну новую array([5]) из $oldArray и одну другую пару ключ = значение. like [1] => Clothing's из $ oldArray

Я ожидаю сравнить $newArray с $oldArray, чтобы получить другой array([4]) и новый array([5]) в $newArray только.

Я искал эти ссылки:

https://www.php.net/manual/en/function.array-diff-assoc.php и https://www.w3schools.com/php/func_array_diff_assoc.asp, но они не помогают.

Затем я искал функцию по этой ссылке: Сравните два разных многомерных массива и выделите изменения

Функция:

function arrayRecursiveDiff($aArray1, $aArray2) { 
$aReturn = array(); 

foreach ($aArray1 as $mKey => $mValue) { 
    if (array_key_exists($mKey, $aArray2)) { 
        if (is_array($mValue)) { 
            $aRecursiveDiff = arrayRecursiveDiff($mValue, $aArray2[$mKey]); 
            if (count($aRecursiveDiff)) { $aReturn[$mKey] = $aRecursiveDiff; 
        } 
    } else { 
        if ($mValue != $aArray2[$mKey]) { 
            $aReturn[$mKey] = $mValue; 
        } 
    } 
    } else { 
        $aReturn[$mKey] = $mValue; 
    } 
} 

return $aReturn; 
} 

$arr1 = arrayRecursiveDiff($newentry,$oldentry);

Он фильтрует и показывает мне как COMPLETE новые массивы из $newArray, так и новые массивы из $newArray только с ключом key = value pai rs , которые отличаются от $oldArray.

Да и снова, я ожидаю, что сравню $newArray с $oldArray, чтобы получить:

1 / COMPLETE отличается от массива array([4]) от $newArray. 2 / Новый массив, например array([5]) из $newArray. 3 / Массивы из $newArray, из которых одна из пар ключ = значение отличается от таковой из $oldArray, но он должен печатать все 9 пары ключ = значение этого массива, который в этом примере является массивом [0]. Я не хочу получать новые массивы из $newArray с выводом ТОЛЬКО обновленных пар ключ = значение .

Извините за длинный пост с многословным объяснением, но у меня есть выбора нет.

Ваша помощь приветствуется.

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