首页 > 解决方案 > 在 PHP 中比较和删除数组中的元素

问题描述

我需要的是比较两个不同的数组,其中有一个公共键。

我写了一个正在做我需要的函数,但我想知道是否有一种最快和干净的方法来获得相同的结果。

这是我的代码:

数组示例:

第一个数组:

    Array
(
    [0] => Array
        (
            [dafid] => daf_60304
            [title] => Hansel & Gretel - Cacciatori di streghe
            [creation] => 2018-09-01 00:02:25
        )

    [1] => Array
        (
            [dafid] => daf_115
            [title] => Il grande Lebowski
            [creation] => 2018-09-01 00:02:25
        )    
    [2] => Array
        (
            [dafid] => daf_238636
            [title] => Anarchia - La notte del giudizio
            [creation] => 2018-09-01 00:02:25
        )

这里是第二个数组:

    Array
(       
    [0] => Array
        (
            [dafid] => daf_316727
            [title] => La notte del giudizio - Election Year
            [creation] => 2018-09-01 00:02:25
        )

    [1] => Array
        (
            [dafid] => daf_115
            [title] => Il grande Lebowski
            [creation] => 2018-09-01 00:02:25
        )

    [2] => Array
        (
            [dafid] => daf_209112
            [title] => Batman v Superman: Dawn of Justice
            [creation] => 2018-09-01 00:02:25
        )

结果:

    Array
(
    [0] => Array
        (
            [dafid] => daf_60304
            [title] => Hansel & Gretel - Cacciatori di streghe
            [creation] => 2018-09-01 00:02:25
        )  
    [1] => Array
        (
            [dafid] => daf_238636
            [title] => Anarchia - La notte del giudizio
            [creation] => 2018-09-01 00:02:25
        )

结果应该是一个没有具有相同 [dafid] 元素的数组。我得到了制作这个功能的结果,但我正在寻找一个更干净的解决方案。

function removeAlreadyDAF($array1,$array2) {
    $dafNextMovies = $array1;

    $dafDB = array2;

    foreach ($dafDB as $k => $v) {
        //$v['dafid']; //id release
        foreach ($dafNextMovies as $key => $value) {
            //loop release disponibili
            if ($value['dafid'] == $v['dafid']) {
                unset($dafNextMovies[$key]);
            }
        }
    }

    $dafNextMovies = array_values($dafNextMovies);

    return $dafNextMovies;
}

标签: phparrayscompareunique

解决方案


检查此功能:array_udiff

第三个参数你将如何选择元素。它应该是这样的。评论中有一个例子。检查它(函数 compare_names($a, $b))

private function compareData($a, $b) {
        return strcmp($a['name'], $b['name']);
    }

推荐阅读