比较两个数组删除重复项

时间:2016-03-07 13:15:19

标签: php arrays duplicates

我正在用户分配页面上构建具有三个角色(管理员,主管,基本)的管理系统,这将是一个管理员可以将基本用户分配给主管的核对表。

我有两个数组,第一个数组是分配给“管理”特定基本用户的主管,第二个数组是所有主管。我的目标是从所有主管阵列中删除已分配的主管。

//示例

$supervisors['all'] = [
         ['id'=>'1','first'=>'john','last'=>'doe'],
         ['id'=>'2','first'=>'jane','last'=>'doe']
];
$supervisors['assigned'] = [
         ['id'=>'2','first'=>'jane','last'=>'doe']
];

//所以我要找的结果是

$supervisors['all'] = [
         ['id'=>'1','first'=>'john','last'=>'doe'],
];
$supervisors['assigned'] = [
         ['id'=>'2','first'=>'jane','last'=>'doe']
];

1 个答案:

答案 0 :(得分:1)

使用array_filter尝试此操作。

// here we collect all the "assigned" ids in a plain array
$assignedSvsIds = array_column($supervisors['assigned'], 'id');
// then use it in a filter function
$supervisors['all'] = array_filter(
    $supervisors['all'], 
    function($sv) use ($assignedSvsIds) {
        // if id is in 'assigned', it'll be filtered out, otherwise - kept
        return !in_array($sv['id'], $assignedSvsIds, true);
    }
);