удалить дублирующее значение из многомерного массива в php [оба результата] - PullRequest
0 голосов
/ 23 октября 2019

У меня есть два массива, я хочу сравнить их и удалить дублированные значения

Вот мой сценарий -

$array=array();

foreach($souqdata as $gd){
    foreach($saved_data as $sd){    
        if($gd['link'] !== $sd['link']){
            $data=array(
                'id'    =>  $gd['id'],
                'website'    =>  $gd['website'],
                'link'    =>  $gd['link'],
                'title'    =>  $gd['title'],
                'price'    =>  $gd['price'],
            );  
        }
        array_push($array,$data);
    }   
}

И у меня есть эти два массива -

Массив 1:

Array
(
    [0] => Array
        (
            [id] => 1
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/a5s-6.2-inch-32gb3gb-dual-sim-mobile-phone-black-oppo-mpg186621.html
            [title] => A5s موبايل ثنائي الشريحة 6.2 بوصة - 32 جيجا/3 جيجا - أسود
            [price] => 2689
        )

    [1] => Array
        (
            [id] => 2
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/samsung-galaxy-a80-6.7-inch-128gb-dual-sim-mobile-phone-phantom-black-13333359.html
            [title] => Galaxy A80 - 6.7 بوصة 128 جيجا بايت موبايل ثنائي الشريحة - أسود
            [price] => 9299
        )

    [2] => Array
        (
            [id] => 3
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/galaxy-a10s-6.2-inch-32gb2gb-dual-sim-4g-mobile-phone-black-samsung-mpg690640.html
            [title] => Galaxy A10s - 6.2 بوصة 32 جيجا بايت/2 جيجا بايت ثنائي الشريحة 4G موبايل - أسود
            [price] => 2166
        )

    [3] => Array
        (
            [id] => 4
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/f11-6.53-inch-128gb6gb-mobile-phone-marble-green-oppo-mpg188783.html
            [title] => موبايل F11 ثنائى الشريحة - 6.53 بوصة - 128 جيجا/6 جيجابايت - أخضر
            [price] => 4849
        )

    [4] => Array
        (
            [id] => 5
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/samsung-galaxy-a20s-6.5-inch-32gb3gb-dual-sim-4g-mobile-phone-black-15459681.html
            [title] => Galaxy A20s - 6.5-inch 32GB/3GB Dual SIM 4G Mobile Phone - Black
            [price] => 2740
        )

    [5] => Array
        (
            [id] => 6
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/samsung-galaxy-a70-6.7-inch-128gb6gb-dual-sim-4g-mobile-phone-white-11731130.html
            [title] => Galaxy A70 موبايل 6.7 بوصة 128 جيجا بايت/6 جيجا بايت ثنائي الشريحة 4G - أبيض
            [price] => 5666
        )

)

Массив 2:

Array
(
    [0] => Array
        (
            [id] => 1
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/infinix-x5515-smart-2-5.5-inch-16gb-dual-sim-4g-mobile-phone-bordeaux-red-4468179.html
            [title] => X5515 Smart 2 - موبايل ثنائي الشريحة 5.5 بوصة - 16 جيجا بايت - 4G - أحمر
            [price] => 1249
        )

    [1] => Array
        (
            [id] => 2
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/x625c-hot-7-pro-6.2-inch-64gb4gb-mobile-phone-midnight-black-infinix-mpg188200.html
            [title] => X625C Hot 7 Pro - 6.2 بوصة 64 جيجا بايت/4 جيجا بايت موبايل - أسود
            [price] => 2099
        )

    [2] => Array
        (
            [id] => 3
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/more-3-4.0-inch-4gb-dual-sim-mobile-phone-black-sico-mpg141415.html
            [title] => More 3 - موبايل 4.0 بوصة - 4G - ثنائي الشريحة - أسود
            [price] => 590
        )

    [3] => Array
        (
            [id] => 4
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/galaxy-a10s-6.2-inch-32gb2gb-dual-sim-4g-mobile-phone-black-samsung-mpg690640.html
            [title] => Galaxy A10s - 6.2 بوصة 32 جيجا بايت/2 جيجا بايت ثنائي الشريحة 4G موبايل - أسود
            [price] => 2166
        )

    [4] => Array
        (
            [id] => 5
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/f11-6.53-inch-128gb6gb-mobile-phone-marble-green-oppo-mpg188783.html
            [title] => موبايل F11 ثنائى الشريحة - 6.53 بوصة - 128 جيجا/6 جيجابايت - أخضر
            [price] => 4846
        )

    [5] => Array
        (
            [id] => 6
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/samsung-galaxy-a20s-6.5-inch-32gb3gb-dual-sim-4g-mobile-phone-black-15459681.html
            [title] => Galaxy A20s - 6.5-inch 32GB/3GB Dual SIM 4G Mobile Phone - Black
            [price] => 2740
        )

    [6] => Array
        (
            [id] => 7
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/galaxy-a20-6.4-inch-32gb-dual-sim-4g-mobile-phone-black-samsung-mpg163994.html
            [title] => موبايل جالاكسي A20 ثنائي الشريحة - 6.4 بوصة - 32 جيجا - 4G - أسود
            [price] => 2599
        )

    [7] => Array
        (
            [id] => 8
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/f11-6.53-inch-128gb6gb-mobile-phone-fluorite-purple-oppo-mpg188782.html
            [title] => موبايل F11 ثنائى الشريحة - 6.53 بوصة - 128 جيجابايت/6 جيجابايت - بنفسجي
            [price] => 4887
        )

    [8] => Array
        (
            [id] => 9
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/y6-prime-2019-6.09-inch-32gb-dual-sim-4g-mobile-phone-sapphire-blue-huawei-mpg160898.html
            [title] => Y6 Prime (2019) موبايل ثنائي الشريحة - 6.09 بوصة - 32 جيجا - 4G - أزرق
            [price] => 1973
        )

    [9] => Array
        (
            [id] => 10
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/galaxy-a70-6.7-inch-128gb-dual-sim-4g-mobile-phone-black-samsung-mpg168188.html
            [title] => Galaxy A70 موبايل - 6.7-بوصة 128 جيجا بايت ثنائي الشريحة 4G - أسود
            [price] => 5666
        )

    [10] => Array
        (
            [id] => 11
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/galaxy-a10-6.2-inch-32gb-dual-sim-4g-mobile-phone-black-samsung-mpg161635.html
            [title] => موبايل جالاكسي A10 ثنائي الشريحة - 6.2 بوصة - 32 جيجا - 4G - أسود
            [price] => 1999
        )

    [11] => Array
        (
            [id] => 12
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/3-pro-6.3-inch-64gb-dual-sim-4g-mobile-phone-nitro-blue-realme-mpg179906.html
            [title] => 3 Pro - 6.3 بوصة 64 جيجا بايت/4 جيجا بايت ثنائي الشريحة 4G موبايل - أزرق
            [price] => 3588
        )

    [12] => Array
        (
            [id] => 13
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/infinix-x624-hot-7-6.2-inch-16gb1gb-dual-sim-3g-mobile-phone-aqua-blue-15368124.html
            [title] => X624 Hot 7 - 6.2 بوصة 16 جيجا بايت/1 جيجا بايت ثنائي الشريحة 3G موبايل - أزرق
            [price] => 1299
        )

    [13] => Array
        (
            [id] => 14
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/samsung-galaxy-a70-6.7-inch-128gb6gb-dual-sim-4g-mobile-phone-white-11731130.html
            [title] => Galaxy A70 موبايل 6.7 بوصة 128 جيجا بايت/6 جيجا بايت ثنائي الشريحة 4G - أبيض
            [price] => 5666
        )

    [14] => Array
        (
            [id] => 15
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/2-pro-6.3-inch-128gb-mobile-phone-black-sea-realme-mpg159228.html
            [title] => 2 Pro موبايل - 6.3 بوصة 128 جيجا بايت  - أسود
            [price] => 3899
        )

    [15] => Array
        (
            [id] => 16
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/x624b-hot-7-6.2-inch-32gb-dual-sim-4g-mobile-phone-sandstone-black-infinix-mpg173664.html
            [title] => X624B Hot 7 - 6.2 بوصة 32 جيجا بايت ثنائي الشريحة 3G موبايل - أسود
            [price] => 1599
        )

    [16] => Array
        (
            [id] => 17
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/y7-prime-2019-6.26-inch-64gb-mobile-phone-amber-brown-huawei-mpg177132.html
            [title] => Y7 Prime (2019) - موبايل 6.26 بوصة - 64 جيجا بايت بنى
            [price] => 2777
        )

    [17] => Array
        (
            [id] => 18
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/y5-prime-2018-5.45-inch-dual-sim-16gb-mobile-phone-gold-huawei-mpg114982.html
            [title] => Y5 Prime 2018 - موبايل ثنائي الشريحة 5.45 بوصة - 16 جيجا بايت - ذهبي
            [price] => 1399
        )

    [18] => Array
        (
            [id] => 19
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/x627-smart-3-plus-6.2-inch-32gb-mobile-phone-midnight-black-infinix-mpg174362.html
            [title] => X627 Smart 3 Plus - 6.2 بوصة 32 جيجا بايت موبايل - أسود
            [price] => 1888
        )

    [19] => Array
        (
            [id] => 20
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/galaxy-a30s-6.4-inch-64gb4gb-dual-sim-4g-mobile-phone-prism-crush-black-samsung-mpg692434.html
            [title] => Galaxy A30s - 6.4 بوصة 64 جيجا/4 جيجا ثنائي الشريحة 4G - أسود Prism Crush
            [price] => 3680
        )

    [20] => Array
        (
            [id] => 21
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/y5-2019-5.71-inch-32gb-dual-sim-4g-mobile-phone-amber-brown-huawei-mpg169557.html
            [title] => Y5 2019 موبايل 5.71 بوصة - 32 جيجا/2 جيجا - ثنائى الشريحة - 4G - بني
            [price] => 1690
        )

    [21] => Array
        (
            [id] => 22
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/redmi-note-7-6.3-inch-64gb-dual-sim-4g-mobile-phone-neptune-blue-xiaomi-mpg166709.html
            [title] => Redmi Note 7 - 6.3 بوصة 64 جيجا بايت ثنائي الشريحة 4G موبايل - أزرق
            [price] => 4999
        )

    [22] => Array
        (
            [id] => 23
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/3-6.22-inch-32gb-dual-sim-4g-mobile-phone-radiant-blue-realme-mpg169572.html
            [title] => 3 - 6.22 بوصة 32 جيجا بايت ثنائي الشريحة 4G موبايل - أزرق
            [price] => 2258
        )

    [23] => Array
        (
            [id] => 24
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/redmi-7-6.26-inch-32gb-dual-sim-4g-mobile-phone-eclipse-black-xiaomi-mpg167948.html
            [title] => Redmi 7 - 6.26 بوصة 32 جيجا بايت ثنائي الشريحة 4G موبايل - أسود
            [price] => 2349
        )

    [24] => Array
        (
            [id] => 25
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/mi-8-lite-6.21-inch-64gb-4g-dual-sim-mobile-phone-midnight-black-xiaomi-mpg142116.html
            [title] => Mi 8 Lite - موبايل 6.26 بوصة - 64 جيجا - 4G - أسود
            [price] => 3349
        )

    [25] => Array
        (
            [id] => 26
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/a1k-6.1-inch-32gb-dual-sim-4g-mobile-phone-black-oppo-mpg182102.html
            [title] => A1k 4G ثنائى الشريحة - 6.1 بوصة - 32 جيجابايت / 2 جيجا بايت - أسود
            [price] => 1856
        )

    [26] => Array
        (
            [id] => 27
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/y9-prime-2019-6.59-inch-128gb-mobile-phone-emerald-green-huawei-mpg171726.html
            [title] => Y9 Prime 2019 - 6.59 بوصة 128 جيجا بايت/ 4 جيجا بايت موبايل - أخضر إيمارلد
            [price] => 3777
        )

    [27] => Array
        (
            [id] => 28
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/oppo-a5-2020-6.5-inch-128gb4gb-dual-sim-mobile-phone-mirror-black-15472384.html
            [title] => A5 (2020) - 6.5-inch 128GB/4GB Dual SIM Mobile Phone - Mirror Black
            [price] => 3899
        )

    [28] => Array
        (
            [id] => 29
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/1x-5.3-inch-16gb-mobile-phone-gold-alcatel-mpg124937.html
            [title] => 1X - موبايل ثنائي الشريحة 5.3 بوصة 16 جيجا بايت - ذهبى
            [price] => 999
        )

    [29] => Array
        (
            [id] => 30
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/x624-hot-7-6.2-inch-16gb-dual-sim-4g-mobile-phone-cosmic-purple-infinix-mpg179326.html
            [title] => X624 Hot 7 - 6.2 بوصة 16 جيجا بايت ثنائي الشريحة 3G موبايل - بنفسجي
            [price] => 1375
        )

    [30] => Array
        (
            [id] => 31
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/infinix-x627-smart-3-plus-6.21-inch-32gb2gb-mobile-phone-sapphire-cyan-14439919.html
            [title] => X627 Smart 3 Plus - 6.21-inch 32GB/2GB Mobile Phone - Sapphire Cyan
            [price] => 1929
        )

    [31] => Array
        (
            [id] => 32
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/x624b-hot-7-6.2-inch-32gb-dual-sim-4g-mobile-phone-aqua-blue-infinix-mpg175685.html
            [title] => X624B Hot 7 - 6.2 بوصة 32 جيجا بايت ثنائي الشريحة 3G موبايل - أزرق
            [price] => 1675
        )

    [32] => Array
        (
            [id] => 33
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/infinix-x5515-smart-2-5.5-inch-16gb-dual-sim-4g-mobile-phone-sandstone-black-4468178.html
            [title] => X5515 Smart 2 - موبايل ثنائي الشريحة 5.5 بوصة - 16 جيجا بايت - 4G - أسود
            [price] => 1249
        )

    [33] => Array
        (
            [id] => 34
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/infinix-x5515-smart-2-5.5-inch-16gb-dual-sim-4g-mobile-phone-city-blue-4468181.html
            [title] => X5515 Smart 2 - موبايل ثنائي الشريحة 5.5 بوصة - 16 جيجا بايت - 4G - أزرق
            [price] => 1249
        )

    [34] => Array
        (
            [id] => 35
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/samsung-galaxy-a80-6.7-inch-128gb-dual-sim-mobile-phone-phantom-black-13333359.html
            [title] => Galaxy A80 - 6.7 بوصة 128 جيجا بايت موبايل ثنائي الشريحة - أسود
            [price] => 9299
        )

    [35] => Array
        (
            [id] => 36
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/2-pro-6.3-inch-64gb-mobile-phone-black-sea-realme-mpg152629.html
            [title] => 2 Pro - موبايل - 64 جيجا - 6.3 بوصة - أسود
            [price] => 2999
        )

    [36] => Array
        (
            [id] => 37
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/xiaomi-redmi-6a-5.45-inch-16gb2gb-4g-mobile-phone-gold-4480215.html
            [title] => Redmi 6A موبايل 5.45 بوصة - 16 جيجا - 4G - ذهبي
            [price] => 1444
        )

    [37] => Array
        (
            [id] => 38
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/samsung-galaxy-note10-6.8-inch-256gb12gb-dual-sim-4g-mobile-phone-aura-black-14409987.html
            [title] => Galaxy Note10+ - 6.8 بوصة 256 جيجا بايت/12 جيجا بايت ثنائي الشريحة 4G موبايل - أسود
            [price] => 17860
        )

    [38] => Array
        (
            [id] => 39
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/a1k-6.1-inch-32gb-dual-sim-4g-mobile-phone-red-oppo-mpg182103.html
            [title] => A1k - 6.1 بوصة 32 جيجا بايت/2 جيجا بايت ثنائي الشريحة 4G موبايل - أحمر
            [price] => 1844
        )

    [39] => Array
        (
            [id] => 40
            [website] => 2
            [link] => https://www.jumia.com.eg/ar/a5s-6.2-inch-32gb3gb-dual-sim-mobile-phone-black-oppo-mpg186621.html
            [title] => A5s موبايل ثنائي الشريحة 6.2 بوصة - 32 جيجا/3 جيجا - أسود
            [price] => 2689
        )
)

Ответы [ 2 ]

0 голосов
/ 23 октября 2019

Спасибо, я нашел мою проблему

private function super_unique($souqdata,$saved_data) // this function compare between saved data and get data and remove duplicateded ones
{
    $array=array();

    foreach($souqdata as $gd){
        $key = array_search($gd['link'], array_column($saved_data, 'link'));

            if(!$key){
                $data=array(
                    'id'    =>  $gd['id'],
                    'website'    =>  $gd['website'],
                    'link'    =>  $gd['link'],
                    'title'    =>  $gd['title'],
                    'price'    =>  $gd['price'],
                );  
            }else{
                $data=array();
            }
            array_push($array,$data);

    }


    return array_filter($array);


}
0 голосов
/ 23 октября 2019

Объедините оба массива и выполните метод удаления.

$arr = array_merge($arr1,$arr2);

print_r(removeDuplicates($arr));

function removeDuplicates($arr){
     $output = array_map('unserialize',
     array_unique(array_map('serialize', $arr)));
   return $output;
}
...