Php 比较两个具有不同元素数的多维数组

Php 比较两个具有不同元素数的多维数组,php,multidimensional-array,Php,Multidimensional Array,我有两个具有不同元素数的多维数组: $complete = array(array("24","G:\TVShows\24"),array("Lost","G:\TVShows\Lost"),array("Game of Thrones","G:\TVShows\Game of Thrones")); $subset = array(array("24","G:\TVShows\24","English")); 第一个$complete是我的电视节目在磁盘上的完整列表,节目名称,文件路径。第二

我有两个具有不同元素数的多维数组:

$complete = array(array("24","G:\TVShows\24"),array("Lost","G:\TVShows\Lost"),array("Game of Thrones","G:\TVShows\Game of Thrones"));
$subset = array(array("24","G:\TVShows\24","English"));
第一个$complete是我的电视节目在磁盘上的完整列表,节目名称,文件路径。第二个$subset来自我的数据库,包括口语作为第三列/元素

我想返回的显示,我在磁盘上,但没有出现在数据库。如何将它们与元素数不同的数组进行比较


谢谢你的帮助

由于它是一个多级数组,您可以使用并组合数组映射和序列化/取消序列化。考虑这个例子:

$complete = array(
    array("24","G:\TVShows\24"),
    array("Lost","G:\TVShows\Lost"),
    array("Game of Thrones","G:\TVShows\Game of Thrones"),
    array("The Walking Dead","G:\TVShows\The Walking Dead"),
    array("Breaking Bad","G:\TVShows\Breaking Bad"),
    array("Heroes","G:\TVShows\Heroes"),
);

$subset = array(
    array("24","G:\TVShows\24","English"),
    array("The Walking Dead","G:\TVShows\The Walking Dead","English"),
    array("Heroes","G:\TVShows\Heroes","English"),
);

$shows_not_in_db = array();
// properly format the subsets for comparison on complete
foreach($subset as $key_s => $value_s) {
    array_pop($value_s); // remove the last element "English"
    $subset[$key_s] = serialize($value_s);
}

// serialize each complete arrays
$complete = array_map('serialize', $complete);
$shows_not_in_db = array_map('unserialize', array_diff($complete, $subset)); // array diff them, then unserialize

print_r($shows_not_in_db);
编辑:对于不区分大小写的比较,您可以使用以下替代方法:


如果您使用名称或更好的ID作为数组键,您可以使用标准数组函数获取键,比较它们,等等。因此我将以不同的方式构建数组。工作正常。非常感谢你!
$shows_not_in_db = array_map('unserialize', array_udiff($complete, $subset, 'strcasecmp'));

// sample: The walking dead - The Walking Dead