我正在用户分配页面上构建具有三个角色(管理员,主管,基本)的管理系统,这将是一个管理员可以将基本用户分配给主管的核对表。
我有两个数组,第一个数组是分配给“管理”特定基本用户的主管,第二个数组是所有主管。我的目标是从所有主管阵列中删除已分配的主管。
//示例
$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']
];
答案 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);
}
);