Сравнить и удалить элементы из массива в PHP - PullRequest
0 голосов
/ 05 сентября 2018

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

Я написал функцию, которая делает то, что мне нужно, но я хотел бы знать, есть ли самый быстрый и чистый способ получить тот же результат.

вот мой код:

Пример массива:

Первый массив:

    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
        )

А вот 2-й массив:

    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;
}

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Проверьте эту функцию: array_udiff

Третий параметр, как вы собираетесь выбрать элемент. Это должно быть что-то вроде этого. в комментариях есть пример. Проверьте это (функция Compare_names ($ a, $ b))

private function compareData($a, $b) {
        return strcmp($a['name'], $b['name']);
    }
0 голосов
/ 05 сентября 2018

Вы можете легко создать новый массив из массива intersec

$result_array = array_intersect_assoc($array1, $array2);

, который делает именно то, что вы хотите.

...