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

检查此函数: array_udiff

第三个参数 您将如何选择元素 .应该是这样的。评论中有一个示例。检查它(功能compare_names($a,$b((

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

您可以从数组秒间轻松创建新数组

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

它完全符合您的要求。

相关内容

  • 没有找到相关文章