Php 按关键字下的元素筛选出重复的数组

Php 按关键字下的元素筛选出重复的数组,php,arrays,filtering,Php,Arrays,Filtering,我想通过下面类别中的数组键从多维数组中筛选出重复项 我得走了 // $selectedOffers Array ( [Category1] => Array ( [2424] => Array ( [node_name] => Name2424 ) [2525] => Array

我想通过下面类别中的数组键从多维数组中筛选出重复项

我得走了

// $selectedOffers
    Array 
    (
        [Category1] => Array 
        (
            [2424] => Array 
            (
                [node_name] => Name2424
            )
            [2525] => Array 
            (
                [node_name] => Name2525
            )
        )
        [Category2] => Array 
        (
            [2121] => Array 
            (
                [node_name] => Name2121
            )
            [2222] => Array 
            (
                [node_name] => Name2222
            )
        )
    )

// $myProducts    
    Array 
    (
        [Category1] => Array 
        (
            [2323] => Array 
            (
                [node_name] => Name2323
            )
            [2525] => Array 
            (
                [node_name] => Name2525
            )
        )
    )
为了过滤掉它们,我使用了array_diff_key$selectedOffers,$myProducts。问题在于,它是按类别过滤的,而不是按子元素过滤的。因此,如果$selectedOffers和$myProducts数组具有相同的类别,但其中的值不同,它仍将显示相同的类别

我在考虑循环槽类别和构建新阵列,但想知道是否有更简单的方法来实现这一点

任何提示和帮助都将不胜感激

提前谢谢

<?php


$data = 
[
    [
        1 => [],
        2 => []
    ],
    [
        3 => [],
        4 => []
    ]
];

$mine = 
[
    [
        2 => []
    ],
    [
        3 => [],
        5 => []
    ]
];


$ids = [];
foreach($mine as $outer)
    foreach($outer as $k => $v)
        $ids[] = $k;

$filter = function($k) use ($ids) {
    return false === array_search($k, $ids);
};

$filtered = array_map(function($v) use ($filter) {
    return array_filter($v, $filter, ARRAY_FILTER_USE_KEY);
}, $data);

var_export($filtered);
对于Php 5.5,似乎可以跳过使用数组过滤器:

$ids      = array_flip($ids);
$filtered = array_map(function($v) use ($ids) {
    return array_diff_key($v, $ids);
}, $data);

我知道我已经接受了答案,但是在PHP5.5中有什么方法可以做到这一点吗?顺便说一下,写得很好的代码:添加了数组_过滤器的替代方案,请检查它是否按预期工作。谢谢,只是一个离题的问题,我如何学习编写如此整洁的代码:不确定你说的整洁是什么意思?
$ids      = array_flip($ids);
$filtered = array_map(function($v) use ($ids) {
    return array_diff_key($v, $ids);
}, $data);