$input = [
['id' => 1, 'name' => 'a'],
['id' => 2, 'name' => 'b'],
['id' => 3, 'name' => 'c'],
['id' => 4, 'name' => 'd'],
];
$replaceIds = [2 => 4];
$removeIds = array_values($replaceIds);
$result = array_map(
function($el) use ($replaceIds) {
if (array_key_exists($el['id'], $replaceIds)) {
return ['id' => $replaceIds[$el['id']], 'name' => $el['name']];
}
return $el;
},
array_filter(
$input,
function($el) use ($removeIds) {
return !in_array($el['id'], $removeIds);
}
)
);
print_r($result);
//Array(
// [0] => Array(
// [id] => 1
// [name] => a
// )
// [1] => Array(
// [id] => 4
// [name] => b
// )
// [2] => Array(
// [id] => 3
// [name] => c
// )
//)